| """ |
| Agent Q3 [Evo] — ChromaDB Store |
| Persistent vector store. 384-dim nomic-embed-text embeddings. |
| """ |
| import chromadb, os |
|
|
| CHROMA_PATH = os.getenv("CHROMA_PATH", "./chroma_data") |
|
|
| class ChromaStore: |
| def __init__(self, collection: str = "agent_q3_evo"): |
| self.client = chromadb.PersistentClient(path=CHROMA_PATH) |
| self.collection = self.client.get_or_create_collection( |
| name=collection, |
| metadata={"hnsw:space": "cosine"} |
| ) |
|
|
| def add(self, ids: list, embeddings: list, documents: list, metadatas: list): |
| self.collection.add(ids=ids, embeddings=embeddings, documents=documents, metadatas=metadatas) |
|
|
| def query(self, embedding: list, n_results: int = 5) -> dict: |
| return self.collection.query(query_embeddings=[embedding], n_results=n_results) |
|
|
| def count(self) -> int: |
| return self.collection.count() |
|
|
| def export_jsonl(self, path: str): |
| import json |
| results = self.collection.get(include=["documents","metadatas"]) |
| with open(path, "w") as f: |
| for doc, meta in zip(results["documents"], results["metadatas"]): |
| f.write(json.dumps({"text": doc, "meta": meta}) + "\n") |
| print(f"Exported {self.count()} docs to {path}") |
|
|