API Reference
MongoRAG Class
Constructor
Creates a new instance of the MongoRAG class.
const rag = new MongoRAG({
mongoUrl: string,
database: string,
collection: string,
embedding: {
provider: 'openai',
apiKey: string,
model?: string,
batchSize?: number,
dimensions?: number
},
search?: {
maxResults?: number,
minScore?: number,
similarityMetric?: 'cosine' | 'dotProduct' | 'euclidean'
}
});
Parameters
config.mongoUrl
(string, required): MongoDB connection URI.config.database
(string, required): Default MongoDB database name.config.collection
(string, required): Default MongoDB collection name.config.embedding
(object, required):provider
(string, required): Embedding provider (openai
is supported).apiKey
(string, required): API key for the embedding provider.model
(string, optional): Model name (default:'text-embedding-3-small'
).batchSize
(number, optional): Batch size for embedding generation (default:100
).dimensions
(number, optional): Number of dimensions in the embedding space (default:1536
).
config.search
(object, optional):maxResults
(number, optional): Maximum number of results to return (default:5
).minScore
(number, optional): Minimum similarity score threshold (default:0.7
).similarityMetric
(string, optional): Similarity function for search (cosine
,dotProduct
,euclidean
). Defaults to'cosine'
.
Methods
connect()
Establishes connection to MongoDB.
await rag.connect();
disconnect()
Closes the MongoDB connection.
await rag.disconnect();
ingestBatch()
Ingests a batch of documents into the vector store.
await rag.ingestBatch(documents, {
batchSize?: number,
preprocessor?: Function
});
Parameters:
documents
(array, required): Array of documents to ingestoptions
(object, optional):batchSize
: Override default batch sizepreprocessor
: Custom preprocessor for this batch
Returns: Promise<void>
search()
Performs a vector search for similar documents.
const results = await rag.search(query, {
database?: string,
collection?: string,
maxResults?: number,
minScore?: number
});
Parameters:
query
(string, required): Search queryoptions
(object, optional):maxResults
: Maximum number of resultsminScore
: Minimum similarity scorefilter
: MongoDB filter for metadata
Returns: Promise<Array<SearchResult>>
Type Definitions
interface SearchResult {
content: string;
documentId: string;
metadata?: Record<string, any>;
score: number;
}
Configuration Examples
Basic Configuration
const rag = new MongoRAG({
mongoUrl: 'mongodb+srv://your-connection-string',
database: 'ragdb',
collection: 'documents',
embedding: {
provider: 'openai',
apiKey: process.env.EMBEDDING_API_KEY
}
});
Advanced Configuration
const rag = new MongoRAG({
mongoUrl: 'mongodb+srv://your-connection-string',
database: 'ragdb',
collection: 'documents',
embedding: {
provider: 'openai',
apiKey: process.env.EMBEDDING_API_KEY,
model: 'text-embedding-ada-002',
batchSize: 100,
dimensions: 1536
},
search: {
maxResults: 10,
minScore: 0.8,
similarityMetric: 'dotProduct'
}
});
Error Handling
The library provides specific error types:
try {
await rag.search('query');
} catch (error) {
console.error('An error occurred:', error.message);
// Handle the error appropriately
}
For more detailed examples and use cases, refer to: