Fetching Vectors by ID
1. Performing Fetch Operation
Example: Fetch by IDs
res = index.fetch(ids=["doc1", "doc2", "doc3"])
for vid, vec in res["vectors"].items():
print(vid, vec["values"][:5], vec["metadata"])
| Param | Description |
|---|---|
ids | List of vector IDs |
namespace | Source namespace |
| Max IDs | 1000 per call |
2. Fetching from Namespace
| Behavior | Detail |
|---|---|
| Wrong namespace | Returns empty |
| Default | "" |
3. Fetching Multiple Vectors
| Pattern | Note |
|---|---|
| Up to 1000 IDs | Single fetch call |
| > 1000 | Batch into chunks |
4. Validating Fetch Results
Example: Missing IDs
requested = {"a", "b", "c"}
returned = set(res["vectors"].keys())
missing = requested - returned
| Field | Meaning |
|---|---|
vectors | Dict keyed by ID; only existing IDs included |
namespace | Namespace queried |
5. Handling Missing Vectors
| Reason | Action |
|---|---|
| Not yet upserted | Retry after consistency delay |
| Deleted | Confirm via audit log |
| Wrong namespace | Verify namespace parameter |
6. Handling Fetch Errors
| Error | Cause |
|---|---|
| 400 | Invalid ID format |
| 404 | Index not found |
| 429 | Rate limit |
7. Optimizing Fetch Performance
| Tip | Effect |
|---|---|
| Batch IDs | One round-trip per 1000 |
| Skip if cached locally | Avoid unnecessary calls |
| Async parallel batches | Higher throughput |
8. Using Fetch for Data Validation
Example: Verify After Upsert
index.upsert(vectors=batch)
sample = [v["id"] for v in batch[:5]]
got = index.fetch(ids=sample)
assert len(got["vectors"]) == len(sample)
9. Implementing Batch Fetch Patterns
Example: Chunked Fetch
all_vecs = {}
for i in range(0, len(ids), 1000):
chunk = ids[i:i+1000]
res = index.fetch(ids=chunk)
all_vecs.update(res["vectors"])
10. Comparing Fetch vs Query
| Aspect | fetch | query |
|---|---|---|
| Latency | Low | Higher (ANN search) |
| Filtering | No | Yes |