원클릭으로
rag
VectorStore trait, Embedder trait, Retriever, document loaders, and ConversationalRetrievalQA.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
VectorStore trait, Embedder trait, Retriever, document loaders, and ConversationalRetrievalQA.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
AgentExecutor, ChatAgent (ReAct), OpenAIToolsAgent, and the Agent trait.
JOB-251 — Why Arc<dyn LLM> over LLMClone, migration pattern, and correct LLM ownership model.
All Chain types — LLMChain, ConversationalChain, SequentialChain, StuffDocuments, ConversationalRetrievalQA, SqlDatabaseChain.
Trait conformance tests, property-based tests (proptest), fuzz targets, and boundary contracts for langchainx traits.
Core langchainx patterns — LLMChain, builder pattern, Chain trait, prompt macros, and basic invocation.
Constructing LLM backends (OpenAI, Claude, DeepSeek, Qwen, Ollama) and configuring CallOptions.
| name | rag |
| description | VectorStore trait, Embedder trait, Retriever, document loaders, and ConversationalRetrievalQA. |
#[async_trait]
pub trait Embedder: Send + Sync {
async fn embed_documents(&self, documents: &[String]) -> Result<Vec<Vec<f64>>, EmbedderError>;
async fn embed_query(&self, text: &str) -> Result<Vec<f64>, EmbedderError>;
}
Available embedders (each behind a feature flag):
| Backend | Struct | Feature |
|---|---|---|
| OpenAI | OpenAiEmbedder | (default) |
| Ollama | OllamaEmbedder | ollama |
| FastEmbed (local) | FastEmbed | fastembed |
| MistralAI | MistralAiEmbedder | mistralai |
#[async_trait]
pub trait VectorStore: Send + Sync {
type Options;
async fn add_documents(&self, docs: &[Document], opt: &Self::Options)
-> Result<Vec<String>, Box<dyn Error>>;
async fn similarity_search(&self, query: &str, limit: usize, opt: &Self::Options)
-> Result<Vec<Document>, Box<dyn Error>>;
}
Use the add_documents! and similarity_search! macros for ergonomic default options:
use langchainx::{add_documents, similarity_search};
add_documents!(store, &docs).await?;
let results = similarity_search!(store, "query text", 5).await?;
## Retriever
Wraps a VectorStore for use in chains:
use langchainx::vectorstore::Retriever;
let retriever = Retriever::new(vector_store, 5); // 5 = num docs to retrieve
## Full RAG Pipeline (Postgres/pgvector example)
// Cargo.toml: langchainx = { features = ["postgres"] }
use langchainx::{
chain::{Chain, ConversationalRetrieverChainBuilder},
embedding::openai::OpenAiEmbedder,
llm::openai::OpenAI,
memory::SimpleMemory,
prompt_args,
vectorstore::{pgvector::PgVectorBuilder, Retriever, VecStoreOptions},
};
let embedder = OpenAiEmbedder::default();
let store = PgVectorBuilder::new()
.embedder(embedder)
.connection_string("postgres://...")
.build()
.await?;
// Index documents
add_documents!(store, &documents).await?;
// Build retrieval chain
let retriever = Retriever::new(store, 5);
let chain = ConversationalRetrieverChainBuilder::new()
.llm(OpenAI::default())
.retriever(retriever)
.memory(SimpleMemory::new().into())
.build()?;
let answer = chain.invoke(prompt_args! {
"input" => "Summarize the key points."
}).await?;
## Document Loaders
All implement Loader returning Stream<Item = Result<Document, LoaderError>>.
use futures::StreamExt;
use langchainx::document_loaders::{TextLoader, CsvLoader, HtmlLoader};
let mut stream = TextLoader::new("path/to/file.txt").load().await?;
while let Some(doc) = stream.next().await {
let doc = doc?;
println!("{}", doc.page_content);
}
Feature-gated loaders: PdfLoader (lopdf/pdf-extract), GitCommitLoader (git),
HtmlToMarkdownLoader (html-to-markdown), SourceCodeLoader (tree-sitter).