Retrieval-Augmented Generation (RAG) package for NestJS applications with vector database integration.
- Document Processing: Process and chunk documents with customizable strategies
- Embedding Generation: Create vector embeddings using various providers (OpenAI, Ollama, etc.)
- Vector Storage: Store and query vector embeddings with different vector databases
- Semantic Search: Find relevant documents based on semantic similarity
- Response Generation: Generate responses using the retrieved context
npm install @keleshteri/ai-rag
import { Module } from '@nestjs/common';
import { RagModule } from '@keleshteri/ai-rag';
@Module({
imports: [
RagModule.forRoot({
config: {
vectorStore: {
type: 'memory', // For development
connection: {},
},
embedding: {
type: 'openai',
options: {
apiKey: process.env.OPENAI_API_KEY,
}
},
documentProcessing: {
chunkingStrategy: 'paragraph',
chunkSize: 1000,
chunkOverlap: 200,
},
},
}),
],
})
export class AppModule {}
import { Injectable } from '@nestjs/common';
import { RagService } from '@keleshteri/ai-rag';
@Injectable()
export class DocumentService {
constructor(private readonly ragService: RagService) {}
async addDocument(content: string, metadata: Record<string, any>) {
const documentId = await this.ragService.addDocument({
content,
metadata,
});
return documentId;
}
}
import { Injectable } from '@nestjs/common';
import { RagService } from '@keleshteri/ai-rag';
@Injectable()
export class QueryService {
constructor(private readonly ragService: RagService) {}
async generateResponse(query: string) {
const result = await this.ragService.generateResponse(query, {
maxDocuments: 4,
includeMetadata: true,
});
return result;
}
}
- Memory (for development and testing)
- Postgres (with pgvector extension)
- Qdrant
- Pinecone
- and more...
- OpenAI
- Ollama
- TypeScript (for testing)
MIT