검색·답변 파이프라인
검색·답변 파이프라인은 사용자 질의를 받아 관련 원문을 찾고, 답변과 원본 출처까지 반환하는 파이프라인입니다. 질의 원문과 임베딩으로 OpenSearch에서 원문 청크와 검색표현을 Hybrid 검색하고 RRF로 후보를 통합한 뒤, 검색표현을 다시 연결된 원문 청크에 반영해 최종 Top-10 원문 청크를 선정합니다. 이 원문으로 LLM Context를 구성해 답변과 Citation을 생성하며, 검색표현은 검색을 돕는 데만 사용하고 최종 출처는 실제 원문 청크와 문서 페이지에 연결합니다.
전체 흐름
BM25 검색, Dense 검색, RRF 통합은 모두 OpenSearch 안에서 끝납니다. 애플리케이션이 일을 시작하는 시점은 OpenSearch가 통합된 Top-30을 돌려준 뒤입니다.
단계별 입력과 출력
| 단계 | 입력 | 출력 | 실행 주체 | 현재 모델·방식 |
|---|---|---|---|---|
| 질의 처리 | 사용자 질의 | query text와 query embedding | Struct4Search + Embedding 서비스 | 질의 원문은 그대로 사용하고, Qwen/Qwen3-Embedding-8B로 임베딩 생성 |
| Hybrid 검색 | query text와 embedding | 두 채널을 통합한 후보 | OpenSearch | BM25 + Dense 검색 |
| RRF 통합 | 두 채널의 후보 | Top-30 후보 | OpenSearch | Native RRF search pipeline(모델 미사용) |
| 검색 결과 점수 통합 | Top-30 후보 | Top-10 원문 청크 | Struct4Search 애플리케이션 | 검색표현 점수 전달 + Max Score + Top-10 선정(모델 미사용) |
| LLM Context 구성 | Top-10 원문 청크 | 시스템 프롬프트 + 질의 + 근거 | Struct4Search 애플리케이션 | Context와 JSON Schema 구성(모델 미사용) |
| 답변과 출처 표기 | Context | claims | LLM | 기본: Qwen/Qwen3-14B교체 가능: gpt-5.6-luna · gpt-5.6-terra · gpt-5.6-sol선택한 LLM이 답변 claim과 인용할 원문 청크 ID 생성 |
| 답변 후처리 및 원본 출처 연결 | claims | 답변과 출처 링크 | Struct4Search 애플리케이션 | Citation 검증·번호 부여·원본 PDF 페이지 연결(모델 미사용) |
기본 모델은 Struct4Search Master의 production profile 기준입니다. LLM 모델은 profile에서 한 번 선택하며 인덱싱의 생성 단계와 답변에 동일하게 적용됩니다.
후보 수가 줄어드는 순서가 이 파이프라인의 골격입니다. 채널별 깊이 50에서 시작해 통합 후보 30건, 최종 근거 10건으로 좁아집니다.
두 검색 단위의 역할이 다릅니다
| 단위 | ID | 검색 대상 | 인용 가능 |
|---|---|---|---|
| 원문 청크 | ruf_* | 예 | 예 |
| 검색표현 | rte_* | 예 | 아니오 |
검색표현은 문서의 지식그래프에서 생성한 문장입니다. 질의와 어휘가 다른 원문을 찾아 주는 검색 열쇠이지 사실의 출처가 아닙니다.
이 구분이 무너지면 모델이 만든 문장이 인용문이 되고, 그 순간 답변을 원문과 대조할 방법이 사라집니다. 그래서 검색표현은 점수 통합에서 순위를 원문 청크에 넘기고 빠지며, 답변 Schema의 인용 가능 ID 집합에도 들어가지 않습니다.
답변이 할 수 없는 것
- 제공된 원문에 없는 법령·수치·조건·대상·절차를 추가하지 않습니다.
- 검색표현에만 있고 원문에 없는 내용을 답변에 쓰지 않습니다.
- 근거가 전혀 없으면
claims를 빈 배열로 반환합니다. - 질의를 다시 쓰지 않습니다.