ワンクリックで
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).