Download src/embedding.py from LightRT/pdf_rag: direct link, hf CLI and curl.
- Browser
- Download file 1.41 kB
-
https://huggingface.co/spaces/LightRT/pdf_rag/resolve/main/src/embedding.py
- Command line
-
hf download hf://spaces/LightRT/pdf_rag/src/embedding.py
-
curl -L -o embedding.py https://huggingface.co/spaces/LightRT/pdf_rag/resolve/main/src/embedding.py
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 |