Files
ajarbot/tests/test_hybrid_search.py

52 lines
1.8 KiB
Python
Raw Normal View History

"""Test hybrid search implementation."""
from memory_system import MemorySystem
print("Initializing memory system with hybrid search...")
memory = MemorySystem()
print("\nRe-syncing all memories to generate embeddings...")
# Force re-index by clearing the database
memory.db.execute("DELETE FROM chunks")
memory.db.execute("DELETE FROM chunks_fts")
memory.db.execute("DELETE FROM files")
memory.db.commit()
# Re-sync to generate embeddings
memory.sync()
print("\n" + "="*60)
print("TESTING HYBRID SEARCH")
print("="*60)
# Test 1: Semantic search (should work even with different wording)
print("\n1. Testing semantic search for 'when was I born' (looking for birthday):")
results = memory.search_hybrid("when was I born", max_results=3)
for i, result in enumerate(results, 1):
print(f"\n Result {i} (score: {result['score']:.3f}):")
print(f" {result['path']}:{result['start_line']}-{result['end_line']}")
print(f" {result['snippet'][:100]}...")
# Test 2: Technical keyword search
print("\n2. Testing keyword search for 'SQLite FTS5':")
results = memory.search_hybrid("SQLite FTS5", max_results=3)
for i, result in enumerate(results, 1):
print(f"\n Result {i} (score: {result['score']:.3f}):")
print(f" {result['path']}:{result['start_line']}-{result['end_line']}")
print(f" {result['snippet'][:100]}...")
# Test 3: Conceptual search
print("\n3. Testing conceptual search for 'cost optimization':")
results = memory.search_hybrid("cost optimization", max_results=3)
for i, result in enumerate(results, 1):
print(f"\n Result {i} (score: {result['score']:.3f}):")
print(f" {result['path']}:{result['start_line']}-{result['end_line']}")
print(f" {result['snippet'][:100]}...")
print("\n" + "="*60)
print(f"Vector index size: {len(memory.vector_index)} embeddings")
print("="*60)
memory.close()
print("\nTest complete!")