RAG アルゴリズムを理解する
RAGとは?
**RAG(Retrieval-Augmented Generation)は、AIが答えを生成する際に、まず関連文書を検索(Retrieval)した後、その内容を参考にして答えを生成(Generation)**する技術です。
分かりやすく言えば、AIが「オープンブック試験」を受けるようなものです。暗記した知識だけで答えるのではなく、関連資料を調べた上で答えます。
사용자 질문
│
▼
① 검색 (Retrieval)
"질문과 관련된 문서 조각을 찾아라"
│
▼
② 컨텍스트 구성
검색된 문서 조각들을 LLM에게 전달
│
▼
③ 생성 (Generation)
LLM이 문서를 참고하여 답변 생성
│
▼
답변 (출처 포함)
PlantPulse RAG パイプライン
1段階目: 文書インデックス作成(事前準備)
文書をAIが検索できる形に変換する過程です。
원본 문서 (PDF · DOCX · PPTX · XLSX · MD · TXT)
│
▼
┌─────────────────────────┐
│ Docling 파서 │
│ 문서 → 텍스트 + 이미지 │
│ + 테이블 구조 추출 │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 청킹 (Chunking) │
│ 긴 문서를 제목·문단 단위로│
│ 적절한 크기로 분할 │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 임베딩 (Embedding) │
│ 텍스트 → 2560차원 벡터 │
│ 의미를 숫자 배열로 변환 │
└────────┬────────┬───────┘
│ │
▼ ▼
┌────────┐ ┌────────┐
│ Qdrant │ │ Neo4j │
│ 벡터DB │ │ 그래프 │
└────────┘ └────────┘
チャンキングとは?
10ページのマニュアルをまるごと検索すると非効率的です。適切なサイズに分割すれば、正確な部分だけを見つけられます。
[원본 문서: 10페이지 매뉴얼]
↓ 청킹
[청크 1] 1장 개요 (제목 아래 문단들을 묶음)
[청크 2] 2장 점검 절차
[청크 3] 2장 표 · 그림 설명
...
| 文書 | 分割方式 |
|---|---|
| PDF・DOCX・PPTX・XLSX | 見出しと段落に沿ってまとめます(1チャンク目標 約2,000トークン)。表・図・数式は別途抽出し、図にはAuraが説明文を付けます |
| MD・TXT | 1,200トークン単位で分割し、境界で文脈が途切れないよう100トークンを重複させます |
PlantPulseのインストールではチャンクサイズを別途指定しないため、エンジンのデフォルト値がそのまま使われます。
埋め込みとは?
テキストの意味を数値配列(ベクトル)に変換します。意味が似た文はベクトル空間上で近くに位置します。
"펌프 베어링 교체 방법" → [0.12, -0.34, 0.56, ..., 0.78] (2560차원)
"펌프 축수 정비 절차" → [0.11, -0.33, 0.55, ..., 0.77] ← 비슷한 벡터!
"오늘 날씨가 좋다" → [0.89, 0.23, -0.67, ..., 0.12] ← 다른 벡터
2段階目: 検索(Retrieval)
ユーザーの質問が入ると、関連する文書チャンクを探します。PlantPulseのRAGエンジン(LightRAG)はベクトル 検索と知識グラフを併用します。
ベクトル検索(意味ベース)
質問を同じ埋め込みモデルでベクトル化し、ベクトル空間上で最も近いものを探します。
질문: "주입기 베어링 교체 주기는?"
│
▼ 임베딩
질문 벡터: [0.13, -0.35, 0.54, ...]
│
▼ 코사인 유사도 계산
문서 청크 A (점수 0.92): "주입기 베어링은 6개월마다 교체..." ← 선택!
문서 청크 B (점수 0.85): "펌프 축수 정비 시 베어링 점검..." ← 선택!
문서 청크 C (점수 0.31): "작업장 안전 수칙..." ← 제외
長所:「交換周期」=「整備間隔」のような意味的類似性を理解します。
知識グラフ検索(エンティティ・関係)
索引作成時に抽出しておいたエンティティ(設備・部品・手順など)とその間の関係をたどります。
질문: "주입기 베어링 교체 주기는?"
│
▼ 질문에서 키워드 추출
세부 키워드: ["주입기", "베어링"] → 엔티티 쪽 (local)
상위 키워드: ["정비 주기", "교체"] → 관계 쪽 (global)
│
▼ 그래프 탐색
주입기 ─(구성품)─▶ 베어링 ─(정비)─▶ 6개월 교체 절차
│
▼ 연결된 문서 조각을 모음
長所: 一つの文書にすべて書かれていない内容も、複数の文書に散らばった関係をつなげて見つけます。
以前の文書ではデフォルトモードを「Dense + Sparse(BM25)結合」と説明していましたが、使用中のエンジンには BM25のような疎(キーワード)索引はありません。設備IDのように正確に一致させる必要がある名前はエンティティとして 抽出されグラフに入ることで対応されます。
ハイブリッド検索(PlantPulse デフォルトモード)
hybrid は**local(エンティティ中心) + global(関係中心)**を組み合わせたもので、RAGゲートウェイとチャットツールの
デフォルトモードです。設備・部品名(エンティティ)と「何が何に影響を与えるか」(関係)を併せて見ます。
3段階目: リランキング(Reranking)
リランカーモデル(aura-reranker-0.6b)はスタックに立ち上がっていますが、2026.09版の文書検索エンジンには
接続されていません(検証前のためオフにしています)。検索結果は上記2段階の順位のまま回答
生成に渡されます。
リランカーを有効にすると、初期検索結果を質問–文書ペアで再比較し、関連度順に並べ直します。 検索段階で見逃した微妙な関連性を捉える段階です。
4段階目: 回答生成(Generation)
検索された文書チャンクをLLMにコンテキストとして渡し、回答を生成します。
[시스템 프롬프트]
아래 문서를 참고하여 질문에 답하세요.
[검색된 문서]
문서 1: "주입기 베어링은 6개월마다 교체하며..."
문서 2: "교체 시 SKF 6205-2RS 규격을 사용..."
[사용자 질문]
주입기 베어링 교체 주기와 규격을 알려줘.
↓ LLM 생성
[답변]
주입기 베어링 교체 주기는 6개월이며, SKF 6205-2RS 규격을 사용합니다.
(출처: 정비 매뉴얼 3장)
4つの検索モード比較
| モード | 動作方式 | 適した状況 |
|---|---|---|
| hybrid | local + global(グラフのエンティティと関係を併用) | 一般的な文書検索(デフォルト、推奨) |
| naive | 文書チャンクのベクトル類似度のみ — グラフ不使用 | 概念的な質問(「OEEとは何か?」) |
| local | 質問に出てくるエンティティ中心 | 特定の設備・部品の詳細確認 |
| global | エンティティ間の関係中心 | 複数文書にまたがる総合情報 |
エンジンにはこの他のモード(mixなど)もありますが、PlantPulseのRAGゲートウェイは上記4つのみを受け付けます。
知識グラフRAG(Graph RAG)
PlantPulse RAGはベクトル検索のほか、Neo4j知識グラフを活用した検索もサポートします。
문서 인덱싱 시:
텍스트 → 엔티티 추출 → 관계 추출 → Neo4j 그래프 저장
검색 시 (local · global · hybrid 모드):
질문 → 관련 엔티티·관계 → 그래프 탐색 → 연결된 문서 청크
長所:「注入器に関連するすべての整備マニュアル」のような関係ベースの検索が可能です。
文書チャンクごとにAuraがエンティティと関係を抽出します。1チャンクに数分かかることがあり、1チャンクが 時間内に終わらないと、その文書全体が失敗として残ります → トラブルシューティング