While actual vector database clients vary, the conceptual interaction remains consistent. Here's a simplified Python example illustrating how you might embed text and then perform a similarity search. This assumes a VectorDBClient with add_vectors and search methods.
from typing import List, Dict
def get_embedding(text: str) -> List[float]:
return [hash(text) % 1000 / 500 - 1 for _ in range(128)]
class ConceptualVectorDBClient:
def __init__(self):
self.vectors = []
def add_vectors(self, items: List[Dict]):
for item in items:
item_id = item['id']
text = item['text']
embedding = get_embedding(text)
self.vectors.append({'id': item_id, 'vector': embedding, 'metadata': item.get('metadata', {})})
print(f"Added {len(items)} vectors.")
def search(self, query_text: str, k: int = 5) -> List[Dict]:
query_embedding = get_embedding(query_text)
results = []
for stored_item in self.vectors:
similarity = sum(q * s for q, s in zip(query_embedding, stored_item['vector']))
results.append({'id': stored_item['id'], 'similarity': similarity, 'metadata': stored_item['metadata']})
results.sort(key=lambda x: x['similarity'], reverse=True)
return results[:k]
db_client = ConceptualVectorDBClient()
docs = [
{'id': 'doc1', 'text': 'The quick brown fox jumps over the lazy dog.', 'metadata': {'author': 'Aesop'}},
{'id': 'doc2', 'text': 'A canine mammal, often kept as a pet.', 'metadata': {'category': 'biology'}},
{'id': 'doc3', 'text': 'Artificial intelligence is transforming industries.', 'metadata': {'topic': 'tech'}},
{'id': 'doc4', 'text': 'Dogs are known for their loyalty and companionship.', 'metadata': {'category': 'pets'}}
]
db_client.add_vectors(docs)
query = 'animals that are loyal'
similar_docs = db_client.search(query, k=2)
print(f"\nSearch results for '{query}':")
for doc in similar_docs:
print(f" - ID: {doc['id']}, Similarity: {doc['similarity']:.4f}, Metadata: {doc['metadata']}")