Retrieval Optimization
advanced_techniquesagentsartificial-intelligencellmsmongodb-genai-showcasenotebooksgenerative-airag
Export
Optimizing Retrieval Performance using Voyage AI and MongoDB
Step 1: Install required packages
- voyageai: Voyage AI's Python SDK
- pymongo: MongoDB's Python driver
- datasets: Python library to interact with datasets on Hugging Face
- scikit-learn: Python library consisting of modules for machine learning and data mining
[ ]
Step 2: Setup prerequisites
Voyage AI
MongoDB
- Register for a free MongoDB Atlas account
- Create a new database cluster
- Obtain the connection string for your database cluster
[5]
[6]
Enter your Voyage API key: ········
[7]
Enter your MongoDB connection string: ········
{'ok': 1.0,
, '$clusterTime': {'clusterTime': Timestamp(1769446214, 1),
, 'signature': {'hash': b'\x82\xd0\xc3=\x9a\x17T\xf4\x81\xea\x80\x0b\xe1\x90c\x01\xc6\xe1b\xf0',
, 'keyId': 7558184680432861186}},
, 'operationTime': Timestamp(1769446214, 1)} Step 3: Download the dataset
[17]
[18]
README.md: 0.00B [00:00, ?B/s]
corpus.jsonl: 0%| | 0.00/5.97M [00:00<?, ?B/s]
Generating corpus split: 0%| | 0/3633 [00:00<?, ? examples/s]
[19]
queries.jsonl: 0%| | 0.00/180k [00:00<?, ?B/s]
Generating queries split: 0%| | 0/3237 [00:00<?, ? examples/s]
[20]
train.jsonl: 0.00B [00:00, ?B/s]
dev.jsonl: 0.00B [00:00, ?B/s]
test.jsonl: 0.00B [00:00, ?B/s]
Generating train split: 0%| | 0/110575 [00:00<?, ? examples/s]
Generating dev split: 0%| | 0/11385 [00:00<?, ? examples/s]
Generating test split: 0%| | 0/12334 [00:00<?, ? examples/s]
[21]
[22]
Step 4: Embed the corpus
[12]
[13]
[203]
[204]
100%|██████████| 37/37 [00:11<00:00, 3.21it/s]
[205]
100%|██████████| 37/37 [00:10<00:00, 3.52it/s]
[206]
[29]
Step 5: Ingest data into MongoDB
[14]
[209]
DeleteResult({'n': 3633, 'electionId': ObjectId('7fffffff000000000000004b'), 'opTime': {'ts': Timestamp(1769039974, 364), 't': 75}, 'ok': 1.0, '$clusterTime': {'clusterTime': Timestamp(1769039974, 364), 'signature': {'hash': b'J#\xa5&q\x1bJ:\xe0\xfe\xe3WN\x04q\xbf\xe5\xcaKt', 'keyId': 7558184680432861186}}, 'operationTime': Timestamp(1769039974, 364)}, acknowledged=True) [ ]
Step 6: Create vector search indexes
[211]
[225]
[226]
['1024_full_precision', , '1024_quantized', , '512_full_precision', , '512_quantized']
Step 7: Evaluation
[8]
[9]
[33]
[34]
[35]
Evaluating baseline config...
Model: voyage-4-large, Dims: 1024, Quantization: None: 323it [00:34, 9.49it/s]
NDCG@10: 0.650 P50 Latency: 1.772ms P95 Latency: 2.110ms Evaluating dim_reduction config...
Model: voyage-4-large, Dims: 512, Quantization: None: 323it [00:33, 9.74it/s]
NDCG@10: 0.643 P50 Latency: 1.049ms P95 Latency: 1.265ms Evaluating quantization config...
Model: voyage-4-large, Dims: 1024, Quantization: Binary: 323it [00:35, 9.09it/s]
NDCG@10: 0.646 P50 Latency: 0.718ms P95 Latency: 0.841ms Evaluating asymmetric_retrieval config...
Model: voyage-4, Dims: 1024, Quantization: None: 323it [00:29, 11.12it/s]
NDCG@10: 0.640 P50 Latency: 1.722ms P95 Latency: 2.006ms