Skip to main content

OpenAI Embeddings Model

A high-performance Python library for generating embeddings using OpenAI's API and other OpenAI-compatible providers, with intelligent caching, batch processing, and similarity search.

Installation

pip install openai-embeddings-model

Quick Start

import openai
from openai_embeddings_model import OpenAIEmbeddingsModel, ModelSettings

client = openai.OpenAI(api_key="your-api-key")
model = OpenAIEmbeddingsModel(model="text-embedding-3-small", openai_client=client)

response = model.get_embeddings(
    input=["Hello, world!", "How are you?"],
    model_settings=ModelSettings(dimensions=512)
)

embeddings = response.to_numpy()  # NumPy array
print(f"Shape: {embeddings.shape}, Tokens: {response.usage.total_tokens}")

Async

import asyncio, openai
from openai_embeddings_model import AsyncOpenAIEmbeddingsModel, ModelSettings

async def main():
    client = openai.AsyncOpenAI(api_key="your-api-key")
    async with AsyncOpenAIEmbeddingsModel(
        model="text-embedding-3-small", openai_client=client
    ) as model:
        response = await model.get_embeddings(
            input=["Hello, world!"],
            model_settings=ModelSettings(dimensions=512)
        )
        print(response.to_numpy().shape)

asyncio.run(main())

AsyncOpenAIEmbeddingsModel owns a ThreadPoolExecutor for cache I/O. Use it as an async context manager, or call await model.aclose(), so the worker threads are released deterministically instead of at garbage-collection time.

Similarity Search

Find the most relevant documents for a query — results are sorted by relevance score:

query = "What is the capital of France?"
documents = [
    "The capital of Germany is Berlin.",
    "The capital of France is Paris.",
    "The capital of Italy is Rome.",
]

response = model.get_similarity(query, documents, model_settings=ModelSettings(dimensions=512))

for result in response.results:
    print(f"[{result.index}] score={result.relevance_score:.4f}  {documents[result.index]}")

Also available as await model.get_similarity(...) on AsyncOpenAIEmbeddingsModel.

Supported Providers

Provider Example model
OpenAI text-embedding-3-small, text-embedding-3-large
Azure OpenAI text-embedding-3-small via AzureOpenAI client
Gemini text-embedding-004
Voyage AI voyage-3, voyage-3-lite
Self-hosted nomic-embed-text via Ollama / LocalAI

Voyage AI

import openai
from openai_embeddings_model import OpenAIEmbeddingsModel, ModelSettings

client = openai.OpenAI(
    base_url="https://api.voyageai.com/v1",
    api_key="your-voyage-api-key"
)
model = OpenAIEmbeddingsModel(model="voyage-3-lite", openai_client=client)
response = model.get_embeddings(input=["Hello"], model_settings=ModelSettings(dimensions=512))

Caching

import diskcache
from openai_embeddings_model import get_default_cache

# Default cache
cache = get_default_cache()

# Custom location
cache = diskcache.Cache('/path/to/cache')

model = OpenAIEmbeddingsModel(
    model="text-embedding-3-small",
    openai_client=client,
    cache=cache
)

Cache hits are tracked in response.usage.cache_hits and never re-billed.

API Reference

Classes

Class Description
OpenAIEmbeddingsModel Synchronous model
AsyncOpenAIEmbeddingsModel Async model (dedicated ThreadPoolExecutor for cache I/O)

Methods

Method Returns
get_embeddings(input, model_settings) ModelResponse
get_embeddings_generator(input, model_settings, chunk_size=100) Generator[ModelResponse]
get_similarity(query, documents, model_settings) SimilarityResponse
aclose() — async model only, releases the cache-I/O thread pool None

ModelSettings

Parameter Type Default Description
dimensions int | None None Custom output dimensions
timeout float | None None Request timeout (seconds)

Responses

ModelResponse

  • to_numpy()NDArray[np.float32]
  • to_python()List[List[float]]
  • usage.input_tokens, usage.total_tokens, usage.cache_hits

SimilarityResponse

  • results: list[SimilarityResult] — sorted by relevance_score descending
  • usage — same as ModelResponse

SimilarityResult

  • index: int — original document index
  • relevance_score: float

Requirements

  • Python 3.11+
  • OpenAI API key (or compatible provider)

License

MIT — Allen Chou <f1470891079@gmail.com>

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openai_embeddings_model-0.5.2.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openai_embeddings_model-0.5.2-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file openai_embeddings_model-0.5.2.tar.gz.

File metadata

  • Download URL: openai_embeddings_model-0.5.2.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.12.13 Darwin/25.6.0

File hashes

Hashes for openai_embeddings_model-0.5.2.tar.gz
Algorithm Hash digest
SHA256 685eb8601f36ef1fca1886eecc97ab66463c8c31f0aa666b89261dba3fa659e4
MD5 73551036b6c3adebb285a7c72e13fcce
BLAKE2b-256 7bae73ea1d1c4b4a31c1b14318f977dc76875ac9598e97e80f47588c2469e14c

See more details on using hashes here.

File details

Details for the file openai_embeddings_model-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for openai_embeddings_model-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2080768a6e3fef72a2cd15f009a71d59fc033f7ecfbac76960390ef3a31fb44d
MD5 8f61425b196d01ded538ba120bd6a406
BLAKE2b-256 f81e4427d2946a6cf5ec7be3ebbd2ec0616d7f371339552fc7bd5f551753002c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.0

2 files

This release

0.5.2 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page