Back to prompt library
Implementing Qdrant for Long-Term Memory
Linked challenge: Build Proactive Personalized Assistant with AutoGen & Gemini 2.5 Pro
Prompt source
implementation38 lines6 sectionsNo variables1 code block
Design a mechanism for the `ContextAnalyst` agent to store and retrieve user preferences, historical interactions, and important facts in a Qdrant vector database. The agent should use embeddings (e.g., from Gemini's embedding models) to store these memories and retrieve relevant ones based on the current user query. Provide a Python class or functions demonstrating this integration.
```python
# Example Qdrant integration sketch
from qdrant_client import QdrantClient, models
# from your_embedding_model_library import get_embedding # e.g., from Gemini
class UserMemory:
def __init__(self, collection_name="user_memories"):
self.client = QdrantClient("localhost", port=6333) # Or your Qdrant instance
self.collection_name = collection_name
self.client.recreate_collection(
collection_name=self.collection_name,
vectors_config=models.VectorParams(size=768, distance=models.Distance.COSINE), # Adjust size for Gemini embeddings
)
def store_memory(self, user_id: str, text: str, metadata: dict = None):
# vector = get_embedding(text) # Replace with actual embedding call
vector = [0.1] * 768 # Placeholder
self.client.upsert(
collection_name=self.collection_name,
points=[
models.PointStruct(
id=str(uuid.uuid4()),
vector=vector,
payload={"user_id": user_id, "text": text, **(metadata or {})}
)
]
)
def retrieve_memory(self, user_id: str, query_text: str, top_k: int = 3):
# query_vector = get_embedding(query_text) # Replace with actual embedding call
query_vector = [0.2] * 768 # Placeholder
search_result = self.client.search(
collection_name=self.collection_name,
query_vector=query_vector,
query_filter=models.Filter(must=[models.FieldCondition(key="user_id", match=models.MatchValue(value=user_id))]),
limit=top_k
)
return [point.payload['text'] for point in search_result]
# The ContextAnalyst agent would then use this class.
```