RAG (Retrieval Augmented Generation) library for MongoDB Vector Search
npm install mongodb-rag---
!NPM Version
!License
!Issues
!Pull Requests
!Downloads
!MongoDB-RAG
---
sh
npm install mongodb-rag dotenv
`$3
1. Initialize Your App using the CLI:
`sh
npx mongodb-rag init
`
This will guide you through setting up your MongoDB connection and save the configuration to .mongodb-rag.json. Make sure to add .mongodb-rag.json to your .gitignore file to keep your credentials secure.`bash
% npx mongodb-rag init
โ Enter your MongoDB connection string: ยท mongodb+srv://:@cluster0.mongodb.net/
โ Enter the database name: ยท mongodb-rag
โ Enter the collection name: ยท documents
โ Select an embedding provider: ยท openai
โ Enter your API key (skip if using Ollama): ยท your-embedding-api-key
โ Enter the model name: ยท text-embedding-3-small
โ Enter the embedding dimensions: ยท 1536
โ
Configuration saved to .mongodb-rag.json๐ Next steps:
1. Run
npx mongodb-rag test-connection to verify your setup
2. Run npx mongodb-rag create-index to create your vector search index
`2. Create a MongoDB Atlas Cluster (MongoDB Atlas)
3. Enable Vector Search under Indexes:
`json
{
"definition": {
"fields": [
{ "path": "embedding", "type": "vector", "numDimensions": 1536, "similarity": "cosine" }
]
}
}
`
or, use the CLI to create the index:
`sh
npx mongodb-rag create-index
`
4. Create a .env File using:
`sh
npx mongodb-rag create-env
`
This command reads the .mongodb-rag.json file and generates a .env file with the necessary environment variables.$3
You can generate a fully working RAG-enabled app with MongoDB Atlas Vector Search using:`sh
npx mongodb-rag create-rag-app my-rag-app
`This will:
- Scaffold a new CRUD RAG app with Express and MongoDB Atlas.
- Set up environment variables for embedding providers.
- Create API routes for ingestion, search, and deletion.
Then, navigate into your project and run:
`sh
cd my-rag-app
npm install
npm run dev
`$3
`javascript
import { MongoRAG } from 'mongodb-rag';
import dotenv from 'dotenv';
dotenv.config();const rag = new MongoRAG({
mongoUrl: process.env.MONGODB_URI,
database: 'my_rag_db', // Default database
collection: 'documents', // Default collection
embedding: {
provider: process.env.EMBEDDING_PROVIDER,
apiKey: process.env.EMBEDDING_API_KEY,
model: process.env.EMBEDDING_MODEL,
dimensions: 1536
}
});
await rag.connect();
`$3
`javascript
const documents = [
{ id: 'doc1', content: 'MongoDB is a NoSQL database.', metadata: { source: 'docs' } },
{ id: 'doc2', content: 'Vector search is useful for semantic search.', metadata: { source: 'ai' } }
];await rag.ingestBatch(documents, { database: 'dynamic_db', collection: 'dynamic_docs' });
console.log('Documents ingested.');
`$3
`javascript
const query = 'How does vector search work?';const results = await rag.search(query, {
database: 'dynamic_db',
collection: 'dynamic_docs',
maxResults: 3
});
console.log('Search Results:', results);
`$3
`javascript
await rag.close();
`---
โก Additional Features
$3
Store embeddings in multiple databases and collections dynamically.
`javascript
await rag.ingestBatch(docs, { database: 'finance_db', collection: 'reports' });
`$3
`javascript
const results = await rag.search('AI topics', {
database: 'my_rag_db',
collection: 'documents',
maxResults: 5,
filter: { 'metadata.source': 'ai' }
});
``---
---
- For more examples, check our examples directory.
- CLI Reference
- Documentation
- GitHub Repository
- Bug Reports
- MongoDB Atlas