Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

MongoDB vector stores

An alpha MongoDB integration for Microsoft Agent Framework. MongoDBCollection provides async BSON CRUD and dense-vector search, MongoDBStore shares an official async PyMongo client across collections, and MongoDBSettings defines connection configuration.

Installation

pip install agent-framework-mongodb --pre

Requires Python 3.10+, PyMongo 4.13.2+, and a MongoDB deployment with MongoDB Vector Search. Search-index creation requires the corresponding database permissions.

Connection

Set MONGODB_URI and MONGODB_DATABASE_NAME; MONGODB_APP_NAME is optional. Constructors resolve explicit arguments first, then an explicitly selected .env file, then process environment variables. URIs accept str or AF SecretString and are unwrapped only for PyMongo.

You can instead inject an AsyncMongoClient and pass database_name. An injected client bypasses URI, app-name, and .env loading and always remains caller-owned. Connector-created clients are closed by close() or async context exit. Collections created by a store borrow its already-resolved client.

Example

import asyncio
from dataclasses import dataclass
from typing import Annotated

from agent_framework import Filter, VectorStoreField, vectorstoremodel
from agent_framework_mongodb import MongoDBStore


@vectorstoremodel(collection_name="articles")
@dataclass
class Article:
    id: Annotated[str, VectorStoreField("key")]
    topic: Annotated[str, VectorStoreField("data", is_indexed=True)]
    text: Annotated[str, VectorStoreField("data")]
    embedding: Annotated[list[float] | None, VectorStoreField("vector", dimensions=3)] = None


async def main() -> None:
    async with MongoDBStore() as store:
        collection = store.get_collection(Article)
        await collection.ensure_collection_exists()
        await collection.upsert(
            [Article("1", "database", "MongoDB stores BSON documents", [1, 0, 0])],
            generate_vectors=False,
        )
        results = await collection.search(
            vector=[1, 0, 0],
            filter=Filter("topic", "eq", "database"),
        )
        async for result in results:
            print(result["record"].text, result["score"])


asyncio.run(main())

Capabilities and limits

  • String, signed 64-bit integer, and BSON ObjectId _id values retain native identity. Only ObjectId keys can be generated. Typed ObjectId models must register an encoder and decoder that preserve ObjectId; IDs are never stringified or copied to hidden fields in storage. Agent-facing CRUD tool JSON represents ObjectId keys as validated 24-character hexadecimal strings and converts them back to native values at the collection boundary.
  • Multiple top-level dense-vector fields are supported through one vector-search index per field. Use provider_annotations={"mongodb.index_name": "..."} to select an existing index name. Dimensions must be 1-8192. Metrics are cosine, dot product, and Euclidean; returned vectorSearchScore values are native normalized relevance scores where larger is better.
  • ensure_collection_exists() creates missing indexes, waits for readiness, and validates existing semantic definitions. It never updates or migrates an incompatible collection or index. Newly written documents become searchable asynchronously, even after an index is queryable.
  • Retrieval filters preserve whole-value equality, missing/null, direct array membership, boolean/number, and literal text semantics with server-side expressions. Collection filters require fields declared as list and reject mapping and non-list collection operands whose identity BSON cannot preserve. Vector prefilters are intentionally narrower: indexed scalar equality, range, membership, AND, and OR only. Nested paths, NOT, null/missing, list membership, and literal/analyzed text are rejected for vector search.
  • Keyword-hybrid search, sparse/binary vectors, provider-side embedding generation, and automatic schema migration are not supported.
  • ANN defaults numCandidates to the MongoDB recommendation of 20 times skip + top, capped at MongoDB's maximum of 10,000. Explicit values must be 1-10,000 and at least skip + top; larger result windows require exact search. The vector stage selects its result window before score thresholding, skip, and limit, so selective thresholds can underfill a page. Deep offsets increase server cost; result prefixes are never materialized by the connector.
  • Every record is fully validated against BSON's signed 64-bit integer and 16 MiB document limits before any batch write. PyMongo then chunks bulk writes using negotiated server limits. A server error can leave a successful prefix (ordered=True) or subset (ordered=False) persisted.

Documentation

Release files for agent-framework-mongodb 1.0.0a260918

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-framework-mongodb 1.0.0a260918
File Size Uploaded
agent_framework_mongodb-1.0.0a260918.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-framework-mongodb 1.0.0a260918
File Interpreter ABI Platform
agent_framework_mongodb-1.0.0a260918-py3-none-any.whl Python 3 none any Details

Total release size: 34.9 kB

Release files / agent_framework_mongodb-1.0.0a260918.tar.gz

Download URL agent_framework_mongodb-1.0.0a260918.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7b7df9497940a82371c4fdba2e19b23c029918f6e6193613ed93c9b4f4d30d47
BLAKE2b-256 checksum
How to use checksums
d7f0a58ff91659a2d1aca8f4da954f1bfbbacac52cf9be9502bf3f8639edd83b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / agent_framework_mongodb-1.0.0a260918-py3-none-any.whl

Download URL agent_framework_mongodb-1.0.0a260918-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
266566957b4c45e4838eee062a94c5a7f317450eb9ffcdf968ae0581dc36ef79
BLAKE2b-256 checksum
How to use checksums
f5b3713a76af9427300ce64dd15f320a06e190c59216cb602d33db2e204e3a51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.0.0a260918 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page