Spaces:
Sleeping
Sleeping
| import chromadb | |
| import uuid | |
| client = chromadb.PersistentClient( | |
| path="./chroma_db" | |
| ) | |
| collection = client.get_or_create_collection( | |
| name="documents" | |
| ) | |
| def add_chunks(chunks, embeddings, filename): | |
| ids = [str(uuid.uuid4()) for _ in chunks] | |
| metadatas = [ | |
| { | |
| "source": filename, | |
| "chunk_id": i | |
| } | |
| for i in range(len(chunks)) | |
| ] | |
| collection.add( | |
| ids=ids, | |
| documents=chunks, | |
| embeddings=embeddings.tolist(), | |
| metadatas=metadatas | |
| ) | |
| def search(query_embedding, top_k=5): | |
| results = collection.query( | |
| query_embeddings=[query_embedding.tolist()], | |
| n_results=top_k, | |
| include=["documents", "metadatas", "distances"] | |
| ) | |
| return { | |
| "documents": results["documents"][0], | |
| "metadatas": results["metadatas"][0], | |
| "distances": results["distances"][0] | |
| } | |
| def reset_collection(): | |
| global collection | |
| try: | |
| client.delete_collection("documents") | |
| except: | |
| pass | |
| collection = client.get_or_create_collection( | |
| name="documents" | |
| ) |