Skip to main content

rag-toolkit

FAISS ベースの RAG(Retrieval-Augmented Generation)ユーティリティライブラリです。

インストール

pip install -e .

# PDF から DB を作る場合は追加で必要
pip install pdfminer.six

ディレクトリ構成

rag_toolkit/
├── __init__.py
├── builders/
│   └── db_builder.py        # ベクトル DB 作成クラス
├── retrievers/
│   └── faiss_retriever.py   # 検索クラス(ライブラリの中心)
└── tools/
    └── tool.py              # LLM ツール基底クラス

クラス概要

クラス 役割
DBBuilder PDF・CSV・JSON からベクトル DB を作成する
FaissRetriever 単体検索・複数 DB 横断検索・LLM ツール連携をすべて担うコアクラス
Tool LLM エージェント連携用の抽象基底クラス

DBBuilder が出力するファイル形式

ソース デフォルトのファイル名 FaissRetriever での読み込み
PDF vector_index.faiss / metadata.json デフォルト設定で読める
CSV qa_index.faiss / qa_metadata.json index_filename / meta_filename を指定
JSON knowledge_index.faiss / knowledge_metadata.json index_filename / meta_filename を指定

DB の作成(DBBuilder)

基本的な流れ

from rag_toolkit import DBBuilder

builder = DBBuilder(output_dir="database/my_system/")

# PDF からマニュアル DB を作成
builder.build_from_pdf(["manual.pdf", "release_notes.pdf"])

# CSV(Q/A)から QA DB を作成
builder.build_from_csv("qa.csv")

# JSON からキャラクター知識 DB を作成
builder.build_from_json("knowledge.json")

例1: PDF からマニュアル DB

from rag_toolkit import DBBuilder

builder = DBBuilder(
    output_dir="database/sample_XYZ_system/",
    chunk_size=1000,    # 1チャンクあたりの文字数
    chunk_overlap=200,  # チャンク間のオーバーラップ文字数
)
builder.build_from_pdf(
    pdf_files=[
        "database/sample_XYZ_system/XYZシステムリリースノート.pdf",
        "database/sample_XYZ_system/XYZシステム統合ユーザーマニュアル.pdf",
    ],
    index_filename="vector_index.faiss",
    meta_filename="metadata.json",
)

例2: CSV(Q/A形式)から QA DB

builder.build_from_csv(
    csv_file="database/sample_XYZ_system/XYZ_system_QA.csv",
    question_col="Q",   # 質問列のヘッダー名
    answer_col="A",     # 回答列のヘッダー名
    index_filename="qa_index.faiss",
    meta_filename="qa_metadata.json",
)

例3: JSON からキャラクター知識 DB

from rag_toolkit import DBBuilder

knowledge_builder = DBBuilder(output_dir="database/DB_ikazuchi_mal/")
knowledge_builder.build_from_json(
    json_file="database/documents_mal_knowledge.json",
    index_filename="knowledge_index.faiss",
    meta_filename="knowledge_metadata.json",
    category_value="いかづちマル",  # metadata["カテゴリ"] を上書きしたい場合
)

複数 DB を作る際のモデル共有(メモリ節約)

from rag_toolkit import DBBuilder

# builder を 1 つ作り、同じモデルで複数の DB を続けて作成できる
builder = DBBuilder(output_dir="database/sample_XYZ_system/")
builder.build_from_pdf([...])
builder.build_from_csv(...)

# 別の出力先に作る場合もモデルを渡して使い回せる
knowledge_builder = DBBuilder(
    output_dir="database/DB_ikazuchi_mal/",
    model=builder.model,  # ← ロード済みモデルを渡す
)
knowledge_builder.build_from_json(...)

DB の検索(FaissRetriever)

1. 単体検索

from rag_toolkit import FaissRetriever

# マニュアル検索
manual = FaissRetriever(
    name="search_xyz_manual",
    description="XYZシステムの仕様書・マニュアルを検索する",
    database_dir="database/sample_XYZ_system/",
    meta_page_key="page",  # ページ番号を表示したい場合に指定
)

# QA 検索("question+answer" で Q/A 結合テキストを参照)
qa = FaissRetriever(
    name="search_xyz_qa",
    description="XYZシステムの過去QAを検索する",
    database_dir="database/sample_XYZ_system/",
    index_filename="qa_index.faiss",
    meta_filename="qa_metadata.json",
    meta_text_keys=["text", "question+answer"],
)

print(manual.run_query("パスワードのリセット手順"))
print(qa.run_query("ログインできない場合の対処法"))

2. 複数 DB 横断検索

# スコア上位順でまとめて返す
results = FaissRetriever.search_multi([manual, qa], "ログインエラーの対処法")
for r in results:
    print(r["source"], r["total_score"], r["text"])

# 文字列として取得
text = FaissRetriever.search_multi_as_str([manual, qa], "ログインエラーの対処法")
print(text)

3. LLM エージェントのツールとして使う

retriever = FaissRetriever(
    name="search_xyz_manual",
    description="XYZシステムの仕様書・マニュアルを検索する",
    database_dir="database/sample_XYZ_system/",
    prompt="以下の参考情報をもとに回答してください。",
)

context = {"query_text": "エラーコード E-501 の意味"}
result = retriever.run(context)
# result["status"]  -> "success" or "ignore"
# result["message"] -> prompt + 検索結果(LLM に渡す文字列)
print(result["message"])

依存ライブラリ

ライブラリ 用途
faiss-cpu >= 1.7 ベクトルインデックスの構築・検索
sentence-transformers >= 2.2 テキストの埋め込みベクトル化
numpy >= 1.24 数値演算
pdfminer.six(任意) PDF からのテキスト抽出(build_from_pdf 使用時のみ)

Release files for rag-support-toolkit 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rag-support-toolkit 0.1.1
File Size Uploaded
rag_support_toolkit-0.1.1.tar.gz 16.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rag-support-toolkit 0.1.1
File Interpreter ABI Platform
rag_support_toolkit-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 43.1 kB

Release files / rag_support_toolkit-0.1.1.tar.gz

Download URL rag_support_toolkit-0.1.1.tar.gz
Size 16.8 kB
Tags Source
SHA-256 checksum
How to use checksums
47c1bdfb04f38acdedb7803ea4f0f2ab683c1d36a202f27b8f2c0174ea9882a4
BLAKE2b-256 checksum
How to use checksums
d7684ca704cc8e0371aa090b2e030e7e620c217a0f9fa362d0539f76490c8090
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release files / rag_support_toolkit-0.1.1-py3-none-any.whl

Download URL rag_support_toolkit-0.1.1-py3-none-any.whl
Size 26.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6badf4fe0dd120cf5eec16a7237c508415f6fb6ab760310ed288e2626c00693
BLAKE2b-256 checksum
How to use checksums
497d1bedeca5a32ac55d4397f44c116279e04da7ffbb3626589cb613015999dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page