Zum Hauptinhalt springen

RAG-Algorithmus verstehen

Was ist RAG?

RAG (Retrieval-Augmented Generation) ist eine Technik, bei der die KI vor dem Erzeugen einer Antwort zunächst relevante Dokumente abruft (Retrieval) und die Antwort anschließend unter Bezug auf deren Inhalt generiert (Generation).

Vereinfacht gesagt schreibt die KI eine "Open-Book-Prüfung". Sie antwortet nicht allein aus auswendig gelerntem Wissen, sondern schlägt zuvor die passenden Unterlagen nach.

사용자 질문


① 검색 (Retrieval)
"질문과 관련된 문서 조각을 찾아라"


② 컨텍스트 구성
검색된 문서 조각들을 LLM에게 전달


③ 생성 (Generation)
LLM이 문서를 참고하여 답변 생성


답변 (출처 포함)

PlantPulse RAG-Pipeline

Schritt 1: Dokumentindexierung (Vorbereitung)

Dabei werden Dokumente in eine Form überführt, in der die KI sie durchsuchen kann.

원본 문서 (PDF, DOCX, 이미지)


┌─────────────────────────┐
│ Docling 파서 │
│ 문서 → 텍스트 + 이미지 │
│ + 테이블 구조 추출 │
└────────────┬────────────┘


┌─────────────────────────┐
│ 청킹 (Chunking) │
│ 긴 문서를 512토큰 단위로 │
│ 적절한 크기로 분할 │
│ (50토큰 오버랩) │
└────────────┬────────────┘


┌─────────────────────────┐
│ 임베딩 (Embedding) │
│ 텍스트 → 2560차원 벡터 │
│ 의미를 숫자 배열로 변환 │
└────────┬────────┬───────┘
│ │
▼ ▼
┌────────┐ ┌────────┐
│ Qdrant │ │ Neo4j │
│ 벡터DB │ │ 그래프 │
└────────┘ └────────┘

Was ist Chunking?

Ein zehnseitiges Handbuch als Ganzes zu durchsuchen, ist ineffizient. Wird es in passend große Abschnitte zerlegt, lässt sich genau die relevante Stelle finden.

[원본 문서: 10페이지 매뉴얼]

↓ 청킹

[청크 1] 1장 개요 부분 (512토큰)
[청크 2] 1장 뒷부분 ~ 2장 앞부분 (512토큰, 50토큰 오버랩)
[청크 3] 2장 중반부 (512토큰, 50토큰 오버랩)
...

Overlap: Damit der Kontext an den Chunk-Grenzen nicht abreißt, werden die letzten 50 Token des vorherigen Chunks in den nächsten Chunk übernommen.

Was ist ein Embedding?

Die Bedeutung eines Textes wird in ein Zahlen-Array (einen Vektor) überführt. Sätze mit ähnlicher Bedeutung liegen im Vektorraum nahe beieinander.

"펌프 베어링 교체 방법" → [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] ← 다른 벡터

Schritt 2: Suche (Retrieval)

Trifft eine Benutzerfrage ein, werden die zugehörigen Dokument-Chunks gesucht.

Dense-Suche (bedeutungsbasiert)

Die Frage wird mit demselben Embedding-Modell vektorisiert; anschließend werden die im Vektorraum nächstgelegenen Dokument-Chunks ermittelt.

질문: "주입기 베어링 교체 주기는?"

▼ 임베딩
질문 벡터: [0.13, -0.35, 0.54, ...]

▼ 코사인 유사도 계산

문서 청크 A (점수 0.92): "주입기 베어링은 6개월마다 교체..." ← 선택!
문서 청크 B (점수 0.85): "펌프 축수 정비 시 베어링 점검..." ← 선택!
문서 청크 C (점수 0.31): "작업장 안전 수칙..." ← 제외

Vorteil: Semantische Ähnlichkeiten wie "Wechselintervall" = "Wartungsintervall" werden erkannt.

Sparse-Suche (schlüsselwortbasiert)

Die Suche erfolgt über exakte Wortübereinstimmung, basierend auf dem BM25-Algorithmus.

질문: "TAG_DJ_M_01_1_1093 허용 온도"

▼ 키워드 추출
["TAG_DJ_M_01_1_1093", "허용", "온도"]

▼ 키워드 매칭

문서 청크 A: "TAG_DJ_M_01_1_1093의 허용 온도 범위는..." ← 정확히 매칭!

Vorteil: Eindeutige Bezeichner wie Anlagen-IDs oder Modellnamen werden exakt gefunden.

Hybride Suche (Standardmodus von PlantPulse)

Die Kombination aus Dense und Sparse vereint das Sprachverständnis der semantischen Suche mit der Präzision der Schlüsselwortsuche.

최종 점수 = Dense 점수 × α + Sparse 점수 × (1-α)
info

PlantPulse RAG verwendet standardmäßig den Hybrid-Modus. Technische Dokumente enthalten viele Fachbegriffe und Anlagen-IDs, weshalb die Schlüsselwortübereinstimmung entscheidend ist.


Schritt 3: Reranking

Die ersten Suchergebnisse (Top 10) werden von einem Reranker-Modell genau neu bewertet, woraus sich die finalen Top 5 ergeben.

초기 검색 결과 (Top 10)


┌─────────────────────────────┐
│ Reranker (rerank-multilingual-v3.0) │
│ │
│ 질문과 각 문서 청크를 │
│ 쌍으로 비교하여 │
│ 관련도를 정밀 평가 │
└──────────────┬──────────────┘


최종 결과 (Top 5) — 가장 관련도 높은 문서만 전달

Der Reranker nutzt ein feiner abgestimmtes Modell als die Suche, um die Relevanz zwischen Frage und Dokument zu bewerten. So werden subtile Zusammenhänge erfasst, die in der Suchphase übersehen wurden.


Schritt 4: Antwortgenerierung (Generation)

Die gefundenen Dokument-Chunks werden dem LLM als Kontext übergeben, woraus die Antwort generiert wird.

[시스템 프롬프트]
아래 문서를 참고하여 질문에 답하세요.

[검색된 문서]
문서 1: "주입기 베어링은 6개월마다 교체하며..."
문서 2: "교체 시 SKF 6205-2RS 규격을 사용..."

[사용자 질문]
주입기 베어링 교체 주기와 규격을 알려줘.

↓ LLM 생성

[답변]
주입기 베어링 교체 주기는 6개월이며, SKF 6205-2RS 규격을 사용합니다.
(출처: 정비 매뉴얼 3장)

Vergleich der vier Suchmodi

ModusFunktionsweiseGeeignet für
hybridKombination aus Dense und SparseAllgemeine Dokumentsuche (Standard, empfohlen)
naiveNur Dense (semantisch)Konzeptionelle Fragen ("Was ist OEE?")
localDetailsuche innerhalb eines DokumentsPrüfen von Detailinhalten eines bestimmten Dokuments
globalBeziehungen zwischen Dokumenten (KG)Dokumentübergreifende Gesamtinformationen

Wissensgraph-RAG (Graph RAG)

PlantPulse RAG unterstützt neben der Vektorsuche auch eine Suche über den Neo4j-Wissensgraphen.

문서 인덱싱 시:
텍스트 → 엔티티 추출 → 관계 추출 → Neo4j 그래프 저장

검색 시 (global 모드):
질문 → 관련 엔티티 → 그래프 탐색 → 연결된 문서 청크

Vorteil: Beziehungsbasierte Suchen wie "alle Wartungshandbücher zum Injektor" werden möglich.