import sys
import json
from pathlib import Path
# Add parent to path for imports
sys.path.insert(0, str(Path(__file__).parent))
sys.path.insert(0, str(Path(__file__).parent.parent / "03_embedding"))
from retriever_multi import get_unified_context_for_llm, export_retrieval_to_json
from embed_query import load_client
import config
def test_retrieval():
"""Test retrieval and output JSON for LLM integration."""
print("=" * 60)
print("Multi-Namespace Retrieval Test")
print("=" * 60)
# Load NVIDIA NIM embedding client
print("\n Loading NVIDIA NIM embedding model...")
client = load_client(config.EMBEDDING_MODEL, config.NVIDIA_API_KEY, "NONE")
print(" Model loaded")
while True:
# Get query from user
query = input("\n Enter query (or 'quit' to exit): ").strip()
if query.lower() in ['quit', 'exit', 'q']:
print("\n Goodbye!")
break
if not query:
continue
# Embed query
print("\n Embedding query...")
query_embedding = client.embed_query(query)
# Retrieve from all namespaces
print(" Retrieving from Pinecone...")
context = get_unified_context_for_llm(
query_embedding=query_embedding,
query_text=query,
doc_top_k=5,
memory_top_k=3,
include_related=True,
)
# Print summary
print(f"\n Results:")
print(f" Document chunks: {context['doc_count']}")
print(f" Memory chunks: {context['memory_count']}")
print(f" Related chunks: {context['related_count']}")
# Export to JSON
output_path = Path(__file__).parent / "output" / "retrieval_output.json"
output = export_retrieval_to_json(query, context, str(output_path))
print(f"\n Saved to: {output_path}")
# Also print the JSON
print("\n" + "=" * 60)
print("JSON Output:")
print("=" * 60)
print(json.dumps(output, indent=2, ensure_ascii=False))
if __name__ == "__main__":
test_retrieval()