Den RAG-Algorithmus verstehen
Was ist RAG?
RAG (Retrieval-Augmented Generation) ist eine Technik, bei der die KI bei der Antwortgenerierung zunächst relevante Dokumente sucht (Retrieval) und anschließend auf Basis dieser Inhalte eine Antwort generiert (Generation).
Einfach gesagt: Es ist, als würde die KI eine "Open-Book-Prüfung" ablegen. Sie antwortet nicht allein aus auswendig gelerntem Wissen, sondern sucht zuerst relevantes Material und antwortet dann.
사용자 질문
│
▼
① 검색 (Retrieval)
"질문과 관련된 문서 조각을 찾아라"
│
▼
② 컨텍스트 구성
검색된 문서 조각들을 LLM에게 전달
│
▼
③ 생성 (Generation)
LLM이 문서를 참고하여 답변 생성
│
▼
답변 (출처 포함)
PlantPulse RAG-Pipeline
Schritt 1: Dokumentenindizierung (Vorbereitung)
Hierbei werden Dokumente in eine Form umgewandelt, die die KI durchsuchen kann.
원본 문서 (PDF · DOCX · PPTX · XLSX · MD · TXT)
│
▼
┌─────────────────────────┐
│ Docling 파서 │
│ 문서 → 텍스트 + 이미지 │
│ + 테이블 구조 추출 │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 청킹 (Chunking) │
│ 긴 문서를 제목·문단 단위로│
│ 적절한 크기로 분할 │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 임베딩 (Embedding) │
│ 텍스트 → 2560차원 벡터 │
│ 의미를 숫자 배열로 변환 │
└────────┬────────┬───────┘
│ │
▼ ▼
┌────────┐ ┌────────┐
│ Qdrant │ │ Neo4j │
│ 벡터DB │ │ 그래프 │
└────────┘ └────────┘
Was ist Chunking?
Ein 10-seitiges Handbuch als Ganzes zu durchsuchen wäre ineffizient. Durch Aufteilung in geeignete Größen lässt sich genau der passende Abschnitt finden.
[원본 문서: 10페이지 매뉴얼]
↓ 청킹
[청크 1] 1장 개요 (제목 아래 문단들을 묶음)
[청크 2] 2장 점검 절차
[청크 3] 2장 표 · 그림 설명
...
| Dokument | Aufteilungsmethode |
|---|---|
| PDF · DOCX · PPTX · XLSX | Wird entlang von Überschriften und Absätzen gruppiert (Zielgröße pro Stück ca. 2.000 Token). Tabellen, Abbildungen und Formeln werden separat extrahiert, Abbildungen erhält Aura mit einer Beschreibung |
| MD · TXT | Wird in Einheiten von 1.200 Token aufgeteilt, wobei sich 100 Token überlappen, damit der Kontext an den Grenzen nicht abreißt |
Bei der PlantPulse-Installation wird die Chunk-Größe nicht gesondert festgelegt, daher gelten die Standardwerte der Engine unverändert.
Was ist Embedding?
Die Bedeutung eines Textes wird in ein Zahlenfeld (einen Vektor) umgewandelt. 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)
Sobald eine Nutzerfrage eingeht, werden relevante Dokumentabschnitte gesucht. Die RAG-Engine von PlantPulse (LightRAG) nutzt dafür sowohl Vektorsuche als auch den Wissensgraphen.
Vektorsuche (bedeutungsbasiert)
Die Frage wird mit demselben Embedding-Modell vektorisiert, und im Vektorraum wird der nächstgelegene Treffer gesucht.
질문: "주입기 베어링 교체 주기는?"
│
▼ 임베딩
질문 벡터: [0.13, -0.35, 0.54, ...]
│
▼ 코사인 유사도 계산
문서 청크 A (점수 0.92): "주입기 베어링은 6개월마다 교체..." ← 선택!
문서 청크 B (점수 0.85): "펌프 축수 정비 시 베어링 점검..." ← 선택!
문서 청크 C (점수 0.31): "작업장 안전 수칙..." ← 제외
Vorteil: Erfasst semantische Ähnlichkeiten wie "Austauschintervall" = "Wartungsabstand".
Wissensgraph-Suche (Entitäten · Beziehungen)
Dabei werden die bei der Indizierung extrahierten Entitäten (Anlagen, Bauteile, Verfahren usw.) und die Beziehungen zwischen ihnen verfolgt.
질문: "주입기 베어링 교체 주기는?"
│
▼ 질문에서 키워드 추출
세부 키워드: ["주입기", "베어링"] → 엔티티 쪽 (local)
상위 키워드: ["정비 주기", "교체"] → 관계 쪽 (global)
│
▼ 그래프 탐색
주입기 ─(구성품)─▶ 베어링 ─(정비)─▶ 6개월 교체 절차
│
▼ 연결된 문서 조각을 모음
Vorteil: Auch Inhalte, die nicht vollständig in einem einzigen Dokument stehen, lassen sich finden, indem über mehrere Dokumente verstreute Beziehungen verknüpft werden.
Frühere Dokumentationen beschrieben den Standardmodus als "Kombination aus Dense + Sparse (BM25)", aber die aktuell verwendete Engine besitzt keinen Sparse-(Schlagwort-)Index wie BM25. Namen, die exakt übereinstimmen müssen, wie z. B. Anlagen-IDs, werden stattdessen als Entität extrahiert und in den Graphen aufgenommen.
Hybride Suche (Standardmodus von PlantPulse)
hybrid kombiniert local (entitätszentriert) + global (beziehungszentriert) und ist der Standardmodus des RAG-Gateways und des Chat-Tools. Dabei werden sowohl Anlagen-/Bauteilnamen (Entitäten) als auch "was beeinflusst was" (Beziehungen) gemeinsam betrachtet.
Schritt 3: Reranking
Das Reranker-Modell (aura-reranker-0.6b) ist im Stack vorhanden, aber in der Dokumentensuch-Engine der Version 2026.09 nicht angebunden (vor der Validierung deaktiviert). Die Suchergebnisse werden unverändert in der Reihenfolge von Schritt 2 an die Antwortgenerierung übergeben.
Wird der Reranker aktiviert, vergleicht er die ersten Suchergebnisse erneut als Frage-Dokument-Paare und ordnet sie nach Relevanz neu. Dieser Schritt erfasst subtile Relevanzen, die in der Suchphase übersehen wurden.
Schritt 4: Antwortgenerierung (Generation)
Die gefundenen Dokumentabschnitte werden dem LLM als Kontext übergeben, um eine Antwort zu generieren.
[시스템 프롬프트]
아래 문서를 참고하여 질문에 답하세요.
[검색된 문서]
문서 1: "주입기 베어링은 6개월마다 교체하며..."
문서 2: "교체 시 SKF 6205-2RS 규격을 사용..."
[사용자 질문]
주입기 베어링 교체 주기와 규격을 알려줘.
↓ LLM 생성
[답변]
주입기 베어링 교체 주기는 6개월이며, SKF 6205-2RS 규격을 사용합니다.
(출처: 정비 매뉴얼 3장)
Vergleich der vier Suchmodi
| Modus | Funktionsweise | Geeignete Situation |
|---|---|---|
| hybrid | local + global (Entitäten und Beziehungen des Graphen gemeinsam) | Allgemeine Dokumentensuche (Standardwert, empfohlen) |
| naive | Nur Vektorähnlichkeit der Dokumentabschnitte — ohne Graph | Konzeptuelle Fragen ("Was ist OEE?") |
| local | Zentriert auf die in der Frage genannten Entitäten | Details zu einer bestimmten Anlage/einem bestimmten Bauteil prüfen |
| global | Zentriert auf Beziehungen zwischen Entitäten | Zusammenfassende Informationen über mehrere Dokumente hinweg |
Die Engine kennt noch weitere Modi (u. a. mix), aber das RAG-Gateway von PlantPulse akzeptiert nur die vier oben genannten.
Wissensgraph-RAG (Graph RAG)
PlantPulse RAG unterstützt neben der Vektorsuche auch eine Suche mittels Neo4j-Wissensgraph.
문서 인덱싱 시:
텍스트 → 엔티티 추출 → 관계 추출 → Neo4j 그래프 저장
검색 시 (local · global · hybrid 모드):
질문 → 관련 엔티티·관계 → 그래프 탐색 → 연결된 문서 청크
Vorteil: Ermöglicht beziehungsbasierte Suchen wie "alle Wartungshandbücher im Zusammenhang mit dem Injektor".
Für jeden Dokumentabschnitt extrahiert Aura Entitäten und Beziehungen. Ein einzelner Abschnitt kann mehrere Minuten benötigen, und wenn ein Abschnitt nicht innerhalb der Zeit fertig wird, gilt das gesamte Dokument als fehlgeschlagen → Fehlerbehebung