RAG (Retrieval Augmented Generation)
RAG enhances AI model output by injecting relevant information from your data into prompts before sending them to the model.
Defining a retriever
Section titled “Defining a retriever”Retriever myRetriever = genkit.defineRetriever("myStore/docs", (ctx, request) -> { List<Document> docs = findSimilarDocs(request.getQuery()); return new RetrieverResponse(docs);});Defining an indexer
Section titled “Defining an indexer”Indexer myIndexer = genkit.defineIndexer("myStore/docs", (ctx, request) -> { indexDocuments(request.getDocuments()); return new IndexerResponse();});Indexing documents
Section titled “Indexing documents”List<Document> docs = List.of( Document.fromText("Paris is the capital of France."), Document.fromText("Berlin is the capital of Germany."));genkit.index("myStore/docs", docs);Retrieve and generate
Section titled “Retrieve and generate”// Retrieve relevant documentsList<Document> relevantDocs = genkit.retrieve( "myStore/docs", "What is the capital of France?");
// Generate with contextModelResponse response = genkit.generate( GenerateOptions.builder() .model("openai/gpt-4o-mini") .prompt("Answer based on context: What is the capital of France?") .docs(relevantDocs) .build());Embeddings
Section titled “Embeddings”Generate vector embeddings for semantic search:
List<Document> documents = List.of( Document.fromText("Hello world"), Document.fromText("Goodbye world"));EmbedResponse response = genkit.embed("openai/text-embedding-3-small", documents);Vector store plugins
Section titled “Vector store plugins”Genkit Java supports multiple vector databases out of the box:
Local Vector Store File-based store for development
Weaviate Open-source vector database
PostgreSQL (pgvector) Vector search in PostgreSQL
Pinecone Managed vector database
Firebase Firestore Firestore vector search