CompifAI / tests /test_vector_search.py
daniel-was-taken's picture
Add standalone RAG chain test notebook and update Milvus client initialization with API key
82b35ca
import os
import time
from langchain_nebius import NebiusEmbeddings
from pydantic import SecretStr
from pymilvus import MilvusClient
# Configuration constants
MILVUS_URI = os.getenv("MILVUS_URI", "http://localhost:19530")
COLLECTION_NAME = "my_rag_collection"
DOCUMENT_DIR = "data/"
EMBEDDING_DIMENSION = 4096
milvus_client = MilvusClient(uri=MILVUS_URI, token=os.getenv("MILVUS_API_KEY"))
TEXT_MAX_LENGTH = 65000
CHUNK_SIZE = 100
BATCH_SIZE = 5
embedding_model = NebiusEmbeddings(
api_key=SecretStr(os.getenv("NEBIUS_API_KEY", os.getenv("OPENAI_API_KEY"))),
model="Qwen/Qwen3-Embedding-8B",
base_url="https://api.studio.nebius.ai/v1"
)
def generate_embedding(text):
"""Generate embedding for a single text."""
return embedding_model.embed_query(text)
def verify_insertion():
"""Verify that data was successfully inserted into Milvus."""
stats = milvus_client.get_collection_stats(COLLECTION_NAME)
print(f"Collection stats: {stats}")
# Test search functionality
test_query = "What are competence standards and their purpose?"
test_embedding = generate_embedding(test_query)
search_results = milvus_client.search(
collection_name=COLLECTION_NAME,
data=[test_embedding],
limit=3,
output_fields=["text", "metadata"]
)
print(f"\nTest search results for '{test_query}':")
for i, result in enumerate(search_results[0]):
print(f"Result {i+1}:")
print(f" Score: {result['distance']:.4f}")
print(f" Text preview: {result['entity']['text'][:300]}...")
print(f" Metadata: {result['entity']['metadata']}")
print("-" * 50)
if __name__ == "__main__":
start_time = time.time()
print("=" * 60)
print("\n Starting test search")
print("=" * 30)
verify_insertion()
elapsed_time = time.time() - start_time
print(f"\nTotal execution time: {elapsed_time:.2f} seconds")