Skip to main content

cognis_rag/
lib.rs

1//! # cognis-rag
2//!
3//! v2-beta RAG primitives: embeddings, vector stores, document loaders,
4//! text splitters, retrievers, and an indexing pipeline.
5//!
6//! Top-level modules:
7//! - [`document`] — the universal `Document` type.
8//! - [`embeddings`] — `Embeddings` trait + Fake/OpenAI/Ollama impls.
9//! - [`vectorstore`] — `VectorStore` trait + `InMemoryVectorStore`.
10//! - [`loaders`] — text/markdown/json/directory/csv/html loaders.
11//! - [`splitters`] — recursive-char + markdown-aware splitters.
12//! - [`retrievers`] — vector / BM25 / ensemble retrievers (each is a `Runnable`).
13//! - [`indexing`] — wire load → split → embed → store with one call.
14
15#![warn(missing_docs)]
16#![warn(rust_2018_idioms)]
17
18pub mod cross_encoder;
19pub mod distance;
20pub mod docstore;
21pub mod document;
22pub mod embeddings;
23pub mod example_selectors;
24pub mod indexing;
25pub mod loaders;
26pub mod multi_vector;
27pub mod record_manager;
28pub mod retrievers;
29pub mod splitters;
30pub mod transformers;
31pub mod vectorstore;
32
33pub use cross_encoder::{CrossEncoder, CrossEncoderReranker, FnCrossEncoder};
34pub use distance::Distance;
35pub use docstore::{Docstore, InMemoryDocstore};
36pub use document::Document;
37#[cfg(feature = "ollama")]
38pub use embeddings::OllamaEmbeddings;
39#[cfg(feature = "openai")]
40pub use embeddings::OpenAIEmbeddings;
41pub use embeddings::{
42    BatchedEmbeddings, CachedEmbeddings, EmbeddingRouter, Embeddings, EmbeddingsRouter,
43    FakeEmbeddings, FnRouter, LengthRouter,
44};
45#[cfg(feature = "google")]
46pub use embeddings::{GoogleEmbeddings, GoogleEmbeddingsBuilder};
47#[cfg(feature = "voyage")]
48pub use embeddings::{VoyageEmbeddings, VoyageEmbeddingsBuilder};
49pub use example_selectors::{
50    AsyncExampleSelector, EmbedMode, MmrExampleSelector, SemanticSimilarityExampleSelector,
51};
52pub use indexing::{IncrementalReport, IndexingPipeline};
53#[cfg(feature = "csv-loader")]
54pub use loaders::CsvLoader;
55#[cfg(feature = "html-loader")]
56pub use loaders::HtmlLoader;
57#[cfg(feature = "pdf-loader")]
58pub use loaders::PdfLoader;
59#[cfg(feature = "toml-loader")]
60pub use loaders::TomlLoader;
61#[cfg(feature = "web-loader")]
62pub use loaders::WebLoader;
63#[cfg(feature = "yaml-loader")]
64pub use loaders::YamlLoader;
65pub use loaders::{
66    DirectoryLoader, DocumentLoader, DocumentStream, JsonLoader, MarkdownLoader, TextLoader,
67};
68pub use multi_vector::MultiVectorIndexer;
69pub use record_manager::{fingerprint, InMemoryRecordManager, RecordManager};
70pub use retrievers::{
71    BM25Retriever, CachingRetriever, CompressorPipeline, EnsembleRetriever, MultiVectorRetriever,
72    ParentDocumentRetriever, QueryTranslatorRetriever, VectorRetriever,
73};
74pub use splitters::{
75    CharTokenizer, CharacterSplitter, CodeLanguage, CodeSplitter, FnTokenizer, HtmlSplitter,
76    JsonSplitter, MarkdownSplitter, RecursiveCharSplitter, SentenceSplitter, TextSplitter,
77    TokenAwareSplitter, Tokenizer,
78};
79pub use transformers::{Dedup, Enrichment, LongContextReorder, MetadataTransformer};
80#[cfg(feature = "vectorstore-chroma")]
81pub use vectorstore::{ChromaBuilder, ChromaProvider};
82#[cfg(feature = "vectorstore-faiss")]
83pub use vectorstore::{
84    FaissConfig, FaissIndex, FaissIndexType, FaissMetric, FaissVectorStore, FlatIndex, HNSWIndex,
85    IVFFlatIndex,
86};
87pub use vectorstore::{Filter, InMemoryVectorStore, SearchResult, VectorStore};
88#[cfg(feature = "vectorstore-pinecone")]
89pub use vectorstore::{PineconeBuilder, PineconeProvider};
90#[cfg(feature = "vectorstore-qdrant")]
91pub use vectorstore::{QdrantBuilder, QdrantProvider};
92#[cfg(feature = "vectorstore-weaviate")]
93pub use vectorstore::{WeaviateBuilder, WeaviateProvider};
94
95/// Common imports for v2 RAG user code.
96pub mod prelude {
97    pub use crate::{
98        BM25Retriever, DirectoryLoader, Distance, Document, DocumentLoader, Embeddings,
99        EnsembleRetriever, InMemoryVectorStore, IndexingPipeline, JsonLoader, MarkdownLoader,
100        MarkdownSplitter, RecursiveCharSplitter, SearchResult, TextLoader, TextSplitter,
101        VectorRetriever, VectorStore,
102    };
103    pub use cognis_core::prelude::*;
104}