symfony/ai-mongo-db-store
Integrates MongoDB Atlas Vector Search ($vectorSearch) as a vector store for Symfony AI Store, enabling storage and similarity search over embeddings using Atlas. Designed for use with MongoDB Atlas and the Symfony AI ecosystem.
$vectorSearch pipeline stage. It fits seamlessly into Symfony’s AI ecosystem, particularly for use cases like RAG (Retrieval-Augmented Generation), semantic search, or recommendation engines where vector embeddings are core.StoreInterface, ensuring low architectural friction for teams already using Symfony AI. The abstraction layer mitigates vendor lock-in to MongoDB Atlas at the application code level.insert, findNearest, remove) with minimal advanced functionality (e.g., no batch operations, dynamic indexing, or async queries).db.embeddings.createIndex({
"vector": "vectorSearch",
"dimensions": 768,
"similarity": "cosine",
"name": "vector_index"
});
mongodb/mongodb driver (v2.0+). Composer dependency ensures version alignment.use Symfony\AI\Store\MongoDbStore;
use Symfony\AI\Store\VectorSearchOptions;
$store = new MongoDbStore(
new \MongoDB\Client($connectionString),
'database',
'embeddings',
new VectorSearchOptions(768, 'cosine')
);
pgvector or Milvus)?faiss, Weaviate) for their specific workload?weaviate, milvus, pgvector) been evaluated for feature parity, cost, and ease of integration?symfony/ai (e.g., AI chatbots, semantic search, or recommendation systems). Example stack:
Symfony 7.x → symfony/ai → symfony/ai-mongo-db-store → MongoDB Atlas
StoreInterface manually, but this adds unnecessary complexity.embeddings).composer.json:
{
"require": {
"symfony/ai": "^0.8",
"symfony/ai-mongo-db-store": "^0.8",
"mongodb/mongodb": "^2.0"
}
}
# .env
MONGODB_ATLAS_URI=mongodb+srv://user:password@cluster.mongodb.net/database?retryWrites=true
config/services.yaml):
Symfony\AI\Store\MongoDbStore:
arguments:
$client: '@mongodb.client'
$database: '%env(MONGODB_DATABASE)%'
$collection: 'embeddings'
$options: '@vector_search_options'
Symfony\AI\Store\VectorSearchOptions:
arguments:
$dimensions: 768
$similarity: 'cosine'
mongodb/mongodb):
MongoDB\Client:
factory: ['MongoDB\Driver\Manager', 'create']
arguments:
- '%env(MONGODB_ATLAS_URI)%'
// Pseudocode for migration
$oldStore = new OldVectorStore();
$newStore = new MongoDbStore($client, 'database', 'embeddings', $options);
foreach ($oldStore->
How can I help you explore Laravel packages today?