Spaces:
Sleeping
Sleeping
| import chromadb | |
| from sentence_transformers import SentenceTransformer | |
| import pandas as pd | |
| EMBED_MODEL = 'all-MiniLM-L6-v2' | |
| class VectorStore: | |
| def __init__(self, persist_dir='./chroma_db'): | |
| self.client = chromadb.PersistentClient(path=persist_dir) | |
| self.col = self.client.get_or_create_collection('papers') | |
| self.embedder = SentenceTransformer(EMBED_MODEL) | |
| def index_papers(self, parquet_path, batch_size=256): | |
| df = pd.read_parquet(parquet_path) | |
| texts = df['abstract'].tolist() | |
| ids = [str(i) for i in range(len(texts))] | |
| for i in range(0, len(texts), batch_size): | |
| batch = texts[i:i+batch_size] | |
| embeds = self.embedder.encode(batch).tolist() | |
| self.col.add(documents=batch, embeddings=embeds, | |
| ids=ids[i:i+batch_size]) | |
| print(f'Indexed {len(texts)} documents') | |