VectorStore
What it is
- A minimal in-memory vector store backed by Qdrant (via
qdrant-client).
- Stores texts + metadata alongside provided embedding vectors and supports cosine-similarity search.
Public API
class VectorStore(dimension: int = 1536)
- Creates an in-memory Qdrant collection named
"documents" with cosine distance and given vector dimension.
VectorStore.add_texts(texts, metadatas=None, embeddings=None) -> List[str]
- Upserts a batch of points containing:
payload["text"] = original text
- additional payload fields from corresponding metadata dict
- Requires
embeddings (no embedding generation is performed).
- Returns string IDs for inserted items.
VectorStore.similarity_search(query_embedding, k: int = 4) -> List[dict]
- Queries the collection with a provided embedding vector.
- Returns a list of dicts:
{"text": ..., "metadata": ..., "score": ...}.
Configuration/Dependencies
- Dependency:
qdrant-client
- Install:
pip install qdrant-client
- Storage: in-memory Qdrant instance (
QdrantClient(":memory:"))
- Collection:
- name:
"documents"
- distance: cosine
- vector size:
dimension passed to constructor
Usage
from naas_abi_core.services.agent.beta.VectorStore import VectorStore
store = VectorStore(dimension=3)
texts = ["hello world", "goodbye world"]
metadatas = [{"source": "a"}, {"source": "b"}]
embeddings = [
[1.0, 0.0, 0.0],
[0.9, 0.1, 0.0],
]
ids = store.add_texts(texts=texts, metadatas=metadatas, embeddings=embeddings)
results = store.similarity_search(query_embedding=[1.0, 0.0, 0.0], k=2)
print(ids)
print(results)
Caveats
add_texts(...) raises ValueError if embeddings is not provided.
- The Qdrant collection is always created in
__init__ with a fixed name ("documents"); data is not persisted (in-memory only).
- IDs are auto-assigned sequential integers starting from
0 and returned as strings.