Notebooks
M
MongoDB
Retrieval Optimization

Retrieval Optimization

advanced_techniquesagentsartificial-intelligencellmsmongodb-genai-showcasenotebooksgenerative-airag

Open In Colab

View Article

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

[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