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 byrelevance_scoredescendingusage— same asModelResponse
SimilarityResult
index: int— original document indexrelevance_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bcdb20e33ff6822bf60bfc1dd909b6ecea05b3fa317da76eec5443584db989c
|
|
| MD5 |
dbf8d7612734d07fe4662e982df0a87a
|
|
| BLAKE2b-256 |
c5e78c28cc7b165401d4ca21b1b52e08a208366f495f5d55ff6f5fef44d99883
|
File details
Details for the file openai_embeddings_model-0.5.1-py3-none-any.whl.
File metadata
- Download URL: openai_embeddings_model-0.5.1-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.13 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f08b014b003a1a9ccf819d9cdbd20a11970fe20764372cdee23054b84ce1da3
|
|
| MD5 |
d671fc5809b0ec9218cdfe8ecd88f15c
|
|
| BLAKE2b-256 |
03011b716e0431d70e2a5001b4062b0554ca98178add9ab8a8c9bba94305bdb7
|