Skip to main content

OpenAIEmbeddingsModel

Project description

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")
    model = AsyncOpenAIEmbeddingsModel(model="text-embedding-3-small", openai_client=client)
    response = await model.get_embeddings(
        input=["Hello, world!"],
        model_settings=ModelSettings(dimensions=512)
    )
    print(response.to_numpy().shape)

asyncio.run(main())

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

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>

Project details


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.1.tar.gz (11.7 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.1-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openai_embeddings_model-0.5.1.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.11.13 Darwin/25.3.0

File hashes

Hashes for openai_embeddings_model-0.5.1.tar.gz
Algorithm Hash digest
SHA256 3bcdb20e33ff6822bf60bfc1dd909b6ecea05b3fa317da76eec5443584db989c
MD5 dbf8d7612734d07fe4662e982df0a87a
BLAKE2b-256 c5e78c28cc7b165401d4ca21b1b52e08a208366f495f5d55ff6f5fef44d99883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openai_embeddings_model-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3f08b014b003a1a9ccf819d9cdbd20a11970fe20764372cdee23054b84ce1da3
MD5 d671fc5809b0ec9218cdfe8ecd88f15c
BLAKE2b-256 03011b716e0431d70e2a5001b4062b0554ca98178add9ab8a8c9bba94305bdb7

See more details on using hashes here.

Supported by

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