Observed since 20 Oct, 18:12 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Python client for AchillesDB, a vector database
Python client for AchillesDB, a hybrid vector and document database (WiredTiger + FAISS under the hood).
pip install achillesdb
Requires Python >= 3.10. The client talks to a running AchillesDB server over
HTTP, so you'll need one reachable (defaults to localhost:8180).
from achillesdb import AchillesClient
with AchillesClient(host="localhost", port=8180) as client:
db = client.create_database("docs")
collection = db.create_collection("articles")
collection.add_documents(
ids=["1", "2"],
documents=["hello world", "goodbye world"],
embeddings=[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]],
metadatas=[{"category": "tech"}, {"category": "food"}],
)
results = collection.query(top_k=5, query_embedding=[0.1, 0.2, 0.3])
print(results)
import asyncio
from achillesdb import AsyncAchillesClient
async def main():
async with AsyncAchillesClient(host="localhost", port=8180) as client:
db = await client.create_database("docs")
collection = await db.create_collection("articles")
await collection.add_documents(
ids=["1"],
documents=["hello world"],
embeddings=[[0.1, 0.2, 0.3]],
)
results = await collection.query(top_k=5, query_embedding=[0.1, 0.2, 0.3])
print(results)
asyncio.run(main())
wherePass a plain dict shaped like the HTTP API's where field, or use the W
builder for a fluent API. Supported operators: $eq, $ne, $gt, $gte,
$lt, $lte, $in, $nin, $arrContains, $and, $or.
from achillesdb import W
collection.query(
top_k=5,
query_embedding=[0.1, 0.2, 0.3],
where=W.and_(W.eq("category", "tech"), W.nin_("year", [2020, 2021])),
)
# equivalent plain-dict form
collection.query(
top_k=5,
query_embedding=[0.1, 0.2, 0.3],
where={"$and": [{"category": "tech"}, {"year": {"$nin": [2020, 2021]}}]},
)
Pass embedding_function to the client to embed text automatically instead
of supplying embeddings/query_embedding yourself:
client = AchillesClient(embedding_function=my_embed_fn)
collection.add_documents(ids=["1"], documents=["hello world"])
collection.query(top_k=5, query="hello")
my_embed_fn takes a list[str] and returns a list[list[float]] (sync or
async, matching the client's mode).
cd sdk/python
uv sync
uv run pytest -m unit # unit + mocked tests, no server required
uv run pytest -m integration # requires a running AchillesDB server
See the repository root for license information.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 21 Jun 2026 | 3 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Public sponsor counts have not been collected. These signals belong to the repository owner.
github · 1 observations shown. Missing days are unknown.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 | 1 | 2026-10-20T22:02:08.0764983Z |
Observed since 20 Oct, 18:12 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:f4b93169db0b0864562de09998337cecbe7ada5dff94b1bcdd9e744603fcee74