Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
from langchain_community.embeddings import HuggingFaceEmbeddings, HuggingFaceInferenceAPIEmbeddings | |
from langchain_community.vectorstores import Qdrant | |
from qdrant_client import QdrantClient | |
from langchain_qdrant import FastEmbedSparse, RetrievalMode | |
from torch import cuda | |
import streamlit as st | |
# get the device to be used eithe gpu or cpu | |
device = 'cuda' if cuda.is_available() else 'cpu' | |
def hybrid_embed_chunks(chunks): | |
""" | |
takes the chunks and does the hybrid embedding for the list of chunks | |
""" | |
embeddings = HuggingFaceEmbeddings( | |
model_kwargs = {'device': device}, | |
encode_kwargs = {'normalize_embeddings': True}, | |
model_name='BAAI/bge-m3' | |
) | |
sparse_embeddings = FastEmbedSparse(model_name="Qdrant/bm25") | |
# placeholder for collection | |
print("starting embedding") | |
#qdrant_collections = {} | |
Qdrant.from_documents( | |
chunks, | |
embeddings, | |
sparse_embeddings = sparse_embeddings, | |
path="/data/local_qdrant", | |
collection_name='giz_worldwide', | |
retrieval_mode=RetrievalMode.HYBRID, | |
) | |
print(qdrant_collections) | |
print("vector embeddings done") | |
def get_local_qdrant(collection_name): | |
"""once the local qdrant server is created this is used to make the connection to exisitng server""" | |
qdrant_collections = {} | |
embeddings = HuggingFaceEmbeddings( | |
model_kwargs = {'device': device}, | |
encode_kwargs = {'normalize_embeddings': True}, | |
model_name='BAAI/bge-m3') | |
client = QdrantClient(path="/data/local_qdrant") | |
sparse_embeddings = FastEmbedSparse(model_name="Qdrant/bm25") | |
print("Collections in local Qdrant:",client.get_collections()) | |
qdrant_collections[collection_name] = Qdrant(client=client, collection_name=collection_name, | |
embeddings=embeddings, | |
) | |
return qdrant_collections |