pdf_rag / src /embedding.py
LightRT's picture
Changes in main.py
3301ece
Raw
History Blame Contribute Delete
1.41 kB
import uuid
import os
from dotenv import load_dotenv
from src.ingestion import ingestion_and_chunking
from langchain_qdrant import QdrantVectorStore, RetrievalMode, FastEmbedSparse
from langchain_huggingface import HuggingFaceEmbeddings
load_dotenv()
qdrant_api_key = os.getenv("QDRANT_API_KEY")
qdrant_url = os.getenv("QDRANT_URL")
dense_embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
sparse_embeddings = FastEmbedSparse(model_name="Qdrant/bm25")
def upload_file(file_bytes: bytes, filename: str, user_id: str, collection_name: str = "pdf_rag"):
docs = ingestion_and_chunking(file_bytes, filename)
file_id = str(uuid.uuid4())
for doc in docs:
doc.metadata["user_id"] = user_id
doc.metadata["file_id"] = file_id
vector_store = QdrantVectorStore.from_documents(
docs,
embedding=dense_embeddings,
sparse_embedding=sparse_embeddings,
url=qdrant_url,
api_key=qdrant_api_key,
collection_name=collection_name,
retrieval_mode=RetrievalMode.HYBRID,
vector_name="dense",
sparse_vector_name="sparse",
)
try:
vector_store.client.create_payload_index(
collection_name=collection_name,
field_name="metadata.user_id",
field_schema="keyword",
)
except Exception:
print("Failed")
return vector_store