Код: Выделить всё
import os
import cohere
import time
from pypdf import PdfReader
from dotenv import load_dotenv
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams
load_dotenv()
docsFolder='./docs'
def getTextFromPDF(fileName):
text = ""
reader = PdfReader(fileName)
for page in reader.pages:
text += page.extract_text() + "\n"
return text
def getPhrases(docsFolder):
phrases=[]
with os.scandir(docsFolder) as it:
for entry in it:
if not entry.name.startswith('.') and entry.is_file():
text=getTextFromPDF(docsFolder+"/"+entry.name)
passages = [p.strip() for p in text.split("\n\n") if p.strip()]
phrases.extend(passages)
return phrases
start = time.perf_counter()
phrases = getPhrases(docsFolder)
end = time.perf_counter()
print("Passage Extraction time "+str(end-start)+" seconds")
co = cohere.ClientV2(api_key=os.getenv("COHERE_KEY"))
start = time.perf_counter()
res = co.embed(texts=phrases,model="embed-multilingual-v3.0", input_type="search_document",embedding_types=['float'])
end = time.perf_counter()
print("Embeddings generation time: "+str(end-start)+" seconds")
print(len(res.texts),len(res.embeddings.float),len(phrases))
# Save results here
Но что мне трудно, так это то, что каждый элемент res.embeddings.float для того, чтобы в качестве входных данных были заданы фразы.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -i-can-sav