A powerful and flexible Retrieval-Augmented Generation (RAG) library for Node.js and TypeScript. Built with OpenAI embeddings and Qdrant vector store.
- 🤖 OpenAI embeddings integration
- 📚 Qdrant vector store support
- 📝 Smart text chunking with sentence boundary preservation
- 🔍 Semantic search with configurable similarity thresholds
- 📦 TypeScript support with full type definitions
- 🚀 Easy-to-use CLI interface
yarn add ragify-js
import { Ragify } from "ragify-js";
import { createEmbeddingProvider } from "ragify-js/factory";
// Initialize Ragify
const ragify = new Ragify({
embeddingProvider: createEmbeddingProvider("openai", "your-openai-api-key"),
collectionName: "my-documents",
qdrantApiKey: "your-qdrant-api-key",
});
// Initialize the vector store
await ragify.initialize();
// Ingest documents
await ragify.ingest({
text: "Your document text here...",
metadata: { source: "example" }
});
// Query the documents
const results = await ragify.query("Your query here", {
topK: 5,
threshold: 0.7
});
console.log(results);
# Ingest documents
npx ragify-js ingest file1.txt file2.txt --collection my-docs
# Query documents
npx ragify-js query "Your question here" --collection my-docs --top-k 5
-
OPENAI_API_KEY
: Your OpenAI API key -
QDRANT_API_KEY
: Your Qdrant API key
interface RagifyConfig {
embeddingProvider: EmbeddingProvider;
collectionName?: string;
qdrantUrl?: string;
qdrantApiKey?: string;
chunkingConfig?: ChunkingConfig;
}
interface ChunkingConfig {
chunkSize?: number;
chunkOverlap?: number;
splitter?: (text: string) => string[];
}
-
initialize()
: Initialize the vector store collection -
ingest(doc: string | Document, options?: IngestOptions)
: Ingest a document -
query(query: string, options?: QueryOptions)
: Query the vector store
-
ingest <files...>
: Ingest one or more files -
query <query>
: Query the vector store
MIT