언어 모델은 특정 정책에 대한 지식이 부족하여 종종 잘못된 정보를 제공합니다. 검색 증강 생성(RAG)은 모델이 답변하기 전에 관련 문서를 제공함으로써 이를 해결합니다. 이 가이드는 도서관 비유를 사용하여 RAG를 설명합니다. 훌륭한 사서는 기억에만 의존하는 대신 특정 페이지를 검색합니다. RAG는 관련 구절을 검색하고, 이를 프롬프트에 추가하며, 해당 정보를 기반으로 답변을 생성하는 것을 포함합니다.RAG는 크거나 자주 업데이트되는 문서를 다루거나 비용 효율성이 중요할 때 유용합니다. RAG는 모든 프롬프트에 전체 문서를 붙여넣는 대신 대상 문서 검색을 허용합니다. 이 글은 Python과 SQLite를 사용하여 상점의 도움말 센터를 위한 간단한 RAG 시스템을 구축하는 방법을 설명합니다. 이 시스템은 문서를 청크로 나누고, 전문 검색을 위해 인덱싱하며, 상위 구절을 검색하고, 프롬프트를 구성하며, 답변의 인용을 확인합니다.구현에는 문서를 의미 있는 구절로 나누고 헤더를 유지하여 맥락을 보존하는 chunk_markdown 함수가 포함됩니다. build_index 함수는 이러한 구절을 저장하기 위한 SQLite FTS5 가상 테이블을 생성하고 효율적인 검색을 가능하게 합니다. search 함수는 질문을 처리하고, 동의어로 확장하며, 일반 단어를 제거하고, 강력한 방법을 사용하여 인덱스를 쿼리합니다.build_prompt 함수는 검색된 구절을 언어 모델을 위한 번호가 매겨진 소스로 형식화합니다. check_answer 함수는 모델이 기존 소스를 인용하고 숫자를 만들어내지 않도록 보장하기 위해 기본적인 유효성 검사를 수행합니다. 핵심 answer 함수는 이러한 단계를 조정하여 먼저 관련 구절을 검색하고 관련 정보가 발견된 경우에만 언어 모델을 호출합니다. 실제 언어 모델 API 없이 테스트하기 위한 자리 표시자 extractive_model이 제공됩니다.
chunk_markdown함수가 포함됩니다.build_index함수는 이러한 구절을 저장하기 위한 SQLite FTS5 가상 테이블을 생성하고 효율적인 검색을 가능하게 합니다.search함수는 질문을 처리하고, 동의어로 확장하며, 일반 단어를 제거하고, 강력한 방법을 사용하여 인덱스를 쿼리합니다.build_prompt함수는 검색된 구절을 언어 모델을 위한 번호가 매겨진 소스로 형식화합니다.check_answer함수는 모델이 기존 소스를 인용하고 숫자를 만들어내지 않도록 보장하기 위해 기본적인 유효성 검사를 수행합니다. 핵심answer함수는 이러한 단계를 조정하여 먼저 관련 구절을 검색하고 관련 정보가 발견된 경우에만 언어 모델을 호출합니다. 실제 언어 모델 API 없이 테스트하기 위한 자리 표시자extractive_model이 제공됩니다.