Vector API - Python SDK
Vector collections store embeddings for similarity search, hybrid retrieval, and recommendation features.
from bosbase import (
VectorDocument,
VectorBatchInsertOptions,
VectorSearchOptions,
VectorCollectionConfig,
)
vectors = pb.vectors
Collections
vectors.create_collection(
"kb_vectors",
VectorCollectionConfig(dimension=384, distance="cosine"),
)
collections = vectors.list_collections()
vectors.update_collection("kb_vectors", VectorCollectionConfig(distance="dot"))
vectors.delete_collection("old_vectors")
Insert Documents
doc = VectorDocument(
vector=[0.1, 0.2, 0.3],
metadata={"article": "123"},
content="Reset your password from settings.",
)
vectors.insert(doc, collection="kb_vectors")
Batch insert:
batch = VectorBatchInsertOptions(
documents=[
VectorDocument(vector=[0.1, 0.2], metadata={"id": "a"}),
VectorDocument(vector=[0.5, 0.7], metadata={"id": "b"}),
],
skip_duplicates=True,
)
vectors.batch_insert(batch, collection="kb_vectors")
Search
search = vectors.search(
VectorSearchOptions(
query_vector=[0.1, 0.2, 0.3],
limit=5,
filter={"article": "123"},
include_content=True,
),
collection="kb_vectors",
)
for result in search.results:
print(result.document.metadata, result.score)
Update / Delete / Get
vectors.update("DOC_ID", doc, collection="kb_vectors")
vectors.delete("DOC_ID", collection="kb_vectors")
vectors.get("DOC_ID", collection="kb_vectors")
Tips
- Keep metadata minimal—use plain dicts that can be serialized to JSON.
- Use
skip_duplicatesduring ingestion to make the batch idempotent. - Store the original text in
contentto avoid round-trips for display. - When combining with LangChaingo RAG, keep collection names consistent between the two services.