draftrag

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2026 License: Apache-2.0

README

draftRAG

Go License

draftRAG is a Go library for building Retrieval-Augmented Generation (RAG) pipelines. It provides a unified API for document indexing, semantic search, and answer generation across multiple backends.

Русская версия: README.ru.md

Features

Vector Stores

  • In-memory — fast prototyping and testing
  • PostgreSQL + pgvector — production-ready with hybrid search (BM25 + semantic), metadata filters, auto-migrations
  • Qdrant — production-ready with payload filters and collection management
  • ChromaDB — vector search with ParentID filters
  • Weaviate — basic retrieval, metadata/ParentID filters, collection management
  • Milvus / Zilliz — high-performance distributed vector search

Capability table: docs/en/vector-stores.md

Embedders & LLM Providers

  • OpenAI-compatible, Anthropic Claude, Ollama (local)
  • CachedEmbedder (LRU + optional Redis L2)
  • Retry + Circuit Breaker wrappers

Search Builder — fluent API for all scenarios

Method Returns Description
.Retrieve(ctx) RetrievalResult Search only, no LLM
.Answer(ctx) string Answer without sources
.Cite(ctx) string, RetrievalResult Answer + source list
.InlineCite(ctx) string, RetrievalResult, []Citation Answer with [n] inline citations
.Stream(ctx) <-chan string Streaming answer
.StreamCite(ctx) <-chan string, RetrievalResult, []InlineCitation Streaming with inline citations

Retrieval strategies: .HyDE(), .MultiQuery(n), .Hybrid(cfg), .ParentIDs(ids...), .Filter(f)

Quick Start

import "github.com/bzdvdn/draftrag/pkg/draftrag"

embedder := draftrag.NewOpenAICompatibleEmbedder(draftrag.OpenAICompatibleEmbedderOptions{
    BaseURL: "https://api.openai.com",
    APIKey:  "sk-...",
    Model:   "text-embedding-ada-002",
})
llm := draftrag.NewOpenAICompatibleLLM(draftrag.OpenAICompatibleLLMOptions{
    BaseURL: "https://api.openai.com",
    APIKey:  "sk-...",
    Model:   "gpt-4o-mini",
})

pipeline, err := draftrag.NewPipeline(draftrag.NewInMemoryStore(), llm, embedder)
if err != nil {
    log.Fatal(err)
}

pipeline.Index(ctx, []draftrag.Document{
    {ID: "doc1", Content: "..."},
})

answer, err := pipeline.Answer(ctx, "Question?")

Documentation

English Russian
Getting Started Начало работы
Concepts Концепции
Pipeline API Pipeline API
Advanced Features Продвинутые возможности
Vector Stores Векторные хранилища
Embedders Embedder'ы
LLM Providers LLM провайдеры
Chunking Чанкинг
Weaviate Weaviate
Compatibility Совместимость
Production Checklist Production checklist
Tutorials
# English Russian
01 Quickstart Быстрый старт
02 Basic RAG Basic RAG
03 Hybrid Search Гибридный поиск
04 Metadata Filter Фильтрация метаданных
05 Streaming Потоковый ответ
06 Atomic Update Атомарное обновление
07 Citations Цитаты
08 Observability Наблюдаемость
09 Evaluation Оценка качества
10 Production Hardening Production hardening

Package Structure

pkg/draftrag/          — public API (use this)
pkg/draftrag/eval/     — eval harness (Hit@K, MRR)
internal/
  domain/              — interfaces and data models
  application/         — pipeline business logic
  infrastructure/      — implementations: vectorstore, embedder, llm, chunker, resilience

Examples

Example Backend Docker LLM Description
examples/memory In-memory No Any Quick start without Docker
examples/pgvector PostgreSQL+pgvector Yes Any Production-ready, hybrid search
examples/qdrant Qdrant Yes Any Payload filters, auto-create collection
examples/chromadb ChromaDB Yes Any Vector search with metadata
examples/weaviate Weaviate Yes Any GraphQL API, class management
examples/milvus Milvus Yes Any High-performance distributed
examples/semantic-chunking In-memory No Any Semantic chunking demo
examples/sub-query-decomposition In-memory No Any Multi-query decomposition

Installation

go get github.com/bzdvdn/draftrag

Minimum Go version: 1.23. For pgvector: go get github.com/jackc/pgx/v5.

License

Apache License 2.0

Directories

Path Synopsis
examples
chat command
Базовый RAG-чат (CLI) — пример использования draftRAG.
Базовый RAG-чат (CLI) — пример использования draftRAG.
chromadb command
@sk-task docs-and-examples#T3.1: chromadb example — RAG-чат с ChromaDB (AC-003).
@sk-task docs-and-examples#T3.1: chromadb example — RAG-чат с ChromaDB (AC-003).
cost-tracking command
@sk-task cost-tracking: T2.2 — пример CostTracker с mock LLM.
@sk-task cost-tracking: T2.2 — пример CostTracker с mock LLM.
deepseek command
Использует публичный API draftrag напрямую.
Использует публичный API draftrag напрямую.
index-dir command
Индексация директории с текстовыми файлами — пример использования draftRAG.
Индексация директории с текстовыми файлами — пример использования draftRAG.
memory command
@sk-task docs-and-examples#T2.1: memory example — in-memory RAG на Go-документации (AC-006).
@sk-task docs-and-examples#T2.1: memory example — in-memory RAG на Go-документации (AC-006).
middleware command
@sk-task middleware-chain#T2.6: пример middleware-цепочки с built-in LoggingMiddleware и PIIDetectorMiddleware (AC-001, AC-004).
@sk-task middleware-chain#T2.6: пример middleware-цепочки с built-in LoggingMiddleware и PIIDetectorMiddleware (AC-001, AC-004).
milvus command
@sk-task docs-and-examples#T3.3: milvus example — RAG-чат с Milvus (AC-005).
@sk-task docs-and-examples#T3.3: milvus example — RAG-чат с Milvus (AC-005).
mistral command
Использует публичный API draftrag напрямую.
Использует публичный API draftrag напрямую.
pgvector command
@sk-task docs-and-examples#T2.2: pgvector example — RAG-чат с PostgreSQL + pgvector (AC-001).
@sk-task docs-and-examples#T2.2: pgvector example — RAG-чат с PostgreSQL + pgvector (AC-001).
pii-guardrails command
@sk-task pii-guardrails#T2.5: пример PII-guardrails с InMemoryStore (AC-001, AC-002).
@sk-task pii-guardrails#T2.5: пример PII-guardrails с InMemoryStore (AC-001, AC-002).
qdrant command
@sk-task docs-and-examples#T2.3: qdrant example — RAG-чат с Qdrant (AC-002).
@sk-task docs-and-examples#T2.3: qdrant example — RAG-чат с Qdrant (AC-002).
semantic-chunking command
@sk-task prod-issues#T3.3: Пример семантического чанкинга (AC-010)
@sk-task prod-issues#T3.3: Пример семантического чанкинга (AC-010)
sub-query-decomposition command
@sk-task prod-issues#T3.4: Пример sub-query decomposition (AC-011)
@sk-task prod-issues#T3.4: Пример sub-query decomposition (AC-011)
weaviate command
@sk-task docs-and-examples#T3.2: weaviate example — RAG-чат с Weaviate (AC-004).
@sk-task docs-and-examples#T3.2: weaviate example — RAG-чат с Weaviate (AC-004).
internal
domain
Package domain содержит интерфейсы и модели domain-слоя.
Package domain содержит интерфейсы и модели domain-слоя.
infrastructure/chunker
Package chunker содержит реализации Chunker для разбиения документов на чанки.
Package chunker содержит реализации Chunker для разбиения документов на чанки.
infrastructure/costtracker
Package costtracker предоставляет обёртку LLMProvider с подсчётом токенов и стоимости.
Package costtracker предоставляет обёртку LLMProvider с подсчётом токенов и стоимости.
infrastructure/decomposer
Package decomposer implements query decomposition strategies.
Package decomposer implements query decomposition strategies.
infrastructure/embedder
Package embedder содержит реализации Embedder для внешних провайдеров.
Package embedder содержит реализации Embedder для внешних провайдеров.
infrastructure/embedder/cache
Package cache содержит in-memory LRU-кэш для эмбеддингов.
Package cache содержит in-memory LRU-кэш для эмбеддингов.
infrastructure/llm
Package llm содержит реализации LLMProvider и StreamingLLMProvider для внешних провайдеров.
Package llm содержит реализации LLMProvider и StreamingLLMProvider для внешних провайдеров.
infrastructure/middleware
Package middleware provides pipeline middleware implementations (logging, PII).
Package middleware provides pipeline middleware implementations (logging, PII).
infrastructure/piidetector
Package piidetector implements pattern-based PII detection and redaction.
Package piidetector implements pattern-based PII detection and redaction.
infrastructure/reranker
Package reranker implements LLM-as-judge reranking strategy.
Package reranker implements LLM-as-judge reranking strategy.
infrastructure/resilience
Package resilience содержит retry/circuit breaker обёртки для внешних вызовов.
Package resilience содержит retry/circuit breaker обёртки для внешних вызовов.
infrastructure/rewriter
Package rewriter implements LLM-based query rewriting strategy.
Package rewriter implements LLM-based query rewriting strategy.
infrastructure/vectorstore
Package vectorstore содержит реализации VectorStore для разных backend'ов.
Package vectorstore содержит реализации VectorStore для разных backend'ов.
pkg
draftrag
Package draftrag — публичный API для сборки RAG pipeline.
Package draftrag — публичный API для сборки RAG pipeline.
draftrag/eval
Package eval provides a small evaluation harness for measuring retrieval quality (Hit@K, MRR, etc).
Package eval provides a small evaluation harness for measuring retrieval quality (Hit@K, MRR, etc).
draftrag/otel
Package otel содержит готовые OpenTelemetry-хуки для draftRAG pipeline.
Package otel содержит готовые OpenTelemetry-хуки для draftRAG pipeline.
draftrag/reranker
Package reranker provides reranking implementations for improving retrieval quality.
Package reranker provides reranking implementations for improving retrieval quality.
draftrag/routergen command
Command routergen generates route handler maps for SearchBuilder.
Command routergen generates route handler maps for SearchBuilder.
draftrag/slogadapter
Package slogadapter предоставляет адаптер log/slog для domain.Logger.
Package slogadapter предоставляет адаптер log/slog для domain.Logger.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL