import datetime from qdrant_client import QdrantClient, models from langchain_qdrant import Qdrant class DatabaseOperations: def __init__(self): pass def save_user_history(client, collection_name, question, answer, embeddings, point_id, user_id, session_id): vector = embeddings.embed_documents([question])[0] client.upsert( collection_name=collection_name, points=[ models.PointStruct( id=point_id, payload={"user_id": user_id, "session_id": session_id, "create_date": datetime.datetime.now().isoformat(), "question": question, "answer": answer}, vector=vector, ) ], ) def save_user_history_demo(client, collection_name, question, answer, embeddings, point_id, manual, feedback): vector = embeddings.embed_documents([question])[0] client.upsert( collection_name=collection_name, points=[ models.PointStruct( id=point_id, payload={"manual": manual, "create_date": datetime.datetime.now().isoformat(), "question": question, "answer": answer, "feedback": feedback}, vector=vector, ) ], ) def question_history_search(client, collection_name, car_id, question, embeddings, threshold=0.9): CAR_ID = car_id vector = embeddings.embed_documents([question])[0] search_result = client.search(collection_name=collection_name, query_vector=vector, query_filter=models.Filter( must=[ models.FieldCondition(key="car_id", match=models.MatchValue(value=CAR_ID)), models.FieldCondition(key="source_name", match=models.MatchValue(value="User Question")) ] ), score_threshold=threshold, limit=1) return search_result def user_history_scroll(client, collection_name, user_id, key="user_id"): history = client.scroll(collection_name=collection_name, scroll_filter=models.Filter( must=[ models.FieldCondition(key=key, match=models.MatchValue(value=user_id)) ] )) return history def save_question_history(client, collection_name, question, answer, embeddings, point_id, car_id, source_name, model_year): vector = embeddings.embed_documents([question])[0] client.upsert( collection_name=collection_name, points=[ models.PointStruct( id=point_id, payload={"source_name": source_name, "page_content": question, "car_id": car_id, "model_year": model_year, "create_date": datetime.datetime.now().isoformat(), "answer": answer}, vector=vector, ) ], )