2025-07-07 22:08:02 +01:00
|
|
|
import cohere
|
2025-07-08 19:57:35 +01:00
|
|
|
from .config import Config
|
2025-07-07 22:08:02 +01:00
|
|
|
|
|
|
|
|
co = cohere.Client(Config.COHERE_API_KEY)
|
|
|
|
|
|
2025-07-08 19:57:35 +01:00
|
|
|
|
2025-07-07 22:08:02 +01:00
|
|
|
def get_embeddings(texts):
|
2025-07-08 19:57:35 +01:00
|
|
|
"""Generate embeddings using Cohere"""
|
|
|
|
|
try:
|
|
|
|
|
response = co.embed(
|
|
|
|
|
texts=texts,
|
|
|
|
|
model=Config.EMBEDDING_MODEL,
|
|
|
|
|
input_type="search_document"
|
|
|
|
|
)
|
|
|
|
|
return response.embeddings
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(f"Error generating embeddings: {str(e)}")
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_query_embedding(query):
|
|
|
|
|
"""Generate embedding for search query"""
|
|
|
|
|
try:
|
|
|
|
|
response = co.embed(
|
|
|
|
|
texts=[query],
|
|
|
|
|
model=Config.EMBEDDING_MODEL,
|
|
|
|
|
input_type="search_query"
|
|
|
|
|
)
|
|
|
|
|
return response.embeddings[0]
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(f"Error generating query embedding: {str(e)}")
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def rerank_results(query, documents):
|
|
|
|
|
"""Re-rank search results using Cohere"""
|
|
|
|
|
try:
|
|
|
|
|
response = co.rerank(
|
|
|
|
|
model="rerank-english-v2.0",
|
|
|
|
|
query=query,
|
|
|
|
|
documents=documents,
|
|
|
|
|
top_n=5
|
|
|
|
|
)
|
|
|
|
|
return response.results
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(f"Error reranking results: {str(e)}")
|
|
|
|
|
return []
|