コンテンツにスキップ

RAG

RAG(Retrieval-Augmented Generation)は、エージェントがドキュメントを使用して質問に答えることを可能にします。Schiftはパイプライン全体を処理します:

PDF/DOCX/TXTのアップロード -> OCR -> チャンキング -> 埋め込み -> ベクトルインデックス
|
クエリ -> 埋め込み -> 検索 -> リランク -> コンテキスト

ドキュメントをアップロードするだけです。Schiftが処理し、エージェントが検索して回答します。

import { Schift, RAG } from "@schift-io/sdk";
const schift = new Schift({ apiKey: "sch_..." });
const rag = new RAG({ bucket: "my-docs", topK: 5 }, schift.transport);
オプションデフォルト説明
bucketstring必須SchiftバケットID
topKnumber7検索あたりの結果数
const results = await rag.search("How do I reset my password?");
for (const r of results) {
console.log(r.text); // 一致した箇所
console.log(r.score); // 関連性スコア(0-1)
console.log(r.metadata); // ドキュメントメタデータ
}
const response = await rag.chat("How do I reset my password?");
console.log(response.answer); // LLM生成の回答
console.log(response.sources); // 使用されたソース箇所

RAGインスタンスをエージェントに渡します。rag_searchという名前のツールとして自動登録されます。

const agent = new Agent({
name: "Support Bot",
instructions: "Answer questions using the knowledge base.",
rag,
model: "gpt-4o-mini",
transport: schift.transport,
});
const result = await agent.run("How do I reset my password?");

エージェントは、ドキュメントから情報が必要なときにrag_searchを呼び出します。

SchiftダッシュボードまたはAPIを介してドキュメントをアップロードします:

// Schiftクライアント経由
await schift.db.upload("my-docs", {
files: [new File([pdfBytes], "manual.pdf")],
});

対応形式:PDF、DOCX、TXT、MD、HTML。Schiftはスキャン文書に対して自動的にOCRを実行します。

Schiftは、何もアップロードしなくても検索できる、共有の事前インデックス済みデータセットを提供しています:

const rag = new RAG({ bucket: "public--korean-law" }, schift.transport);
const results = await rag.search("개인정볼보호법 동의 철회");

完全なリストと詳細はパブリックバケットを参照してください。

別のツール名が必要な場合(例:複数のRAGソース):

const legalDocs = new RAG({ bucket: "legal" }, schift.transport);
const supportDocs = new RAG({ bucket: "support" }, schift.transport);
const agent = new Agent({
tools: [
legalDocs.asTool("search_legal_docs"),
supportDocs.asTool("search_support_docs"),
],
...
});