File size: 934 Bytes
35f0638
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import chromadb

client = chromadb.Client(
    chromadb.config.Settings(
        persist_directory="db",
        is_persistent=True
    )
)

collection = client.get_or_create_collection(
    name="rag_collection",
    metadata={"hnsw:space": "cosine"}  # 🔥 explicit similarity
)


def add_chunks(chunks, embeddings, source_name):
    documents = [c["text"] for c in chunks]

    metadatas = [
        {
            "page": c["page"],
            "source": source_name,
            "text": c["text"][:200]  # 🔥 small preview (useful for debugging)
        }
        for c in chunks
    ]

    # 🔥 Unique IDs (avoid collision)
    ids = [f"{source_name}_{i}_{hash(c['text'])}" for i, c in enumerate(chunks)]

    collection.add(
        documents=documents,
        embeddings=embeddings,
        metadatas=metadatas,
        ids=ids
    )

    # 🔥 Persist to disk
    #client.persist()