검색-기능 보강된 생성
IBM watsonx.ai 의 기초 모델을 사용하면 검색 증강 생성 (RAG) 패턴을 적용하여 지식 기반의 정보를 기반으로 사실적으로 정확한 출력을 생성할 수 있습니다.
이 비디오는 이 문서의 개념 및 태스크를 학습하기 위한 시각적 방법을 제공합니다.
비디오 챕터
[ 0:08 ] 시나리오 설명
[ 0:27 ] 패턴 개요
[ 1:03 ] 지식창고
[ 1:22 ] 검색 구성 요소
' [ 1:41 ] 문맥으로 보강된 프롬프트
' [ 2:13 ] 출력 생성
' [ 2:31 ] 전체 솔루션
[ 2:55 ] 검색 시 고려 사항
' [ 3:58 ] 프롬프트 텍스트
[ 5:01 ] 설명 가능성을 위한 고려 사항
프롬프트에 컨텍스트를 제공하면 정확도가 향상됩니다.
기초 모델은 다양한 이유로 인해 사실적으로 부정확한 출력을 생성할 수 있습니다. 생성된 출력의 정확성을 향상시키는 한 가지 방법은 프롬프트 텍스트에서 필요한 사실을 컨텍스트로 제공하는 것입니다.
예
다음 프롬프트에는 일부 요소를 설정하기 위한 컨텍스트가 포함되어 있습니다.
Aisha recently painted the kitchen yellow, which is her favorite color.
Aisha's favorite color is
아이샤가 유명한 사람이고, 그 사람의 좋아하는 색이 일반적인 사전 훈련 데이터 세트에 포함된 많은 온라인 기사에서 언급된 것이 아니라면, 문장의 시작 부분에 문맥이 없으면 기초 모델은 문장의 끝에서 올바른 문장 완성을 안정적으로 생성할 수 없습니다.
팩트가 채워진 컨텍스트를 포함하는 텍스트로 모델을 프롬프트하는 경우 모델이 생성하는 출력이 더 정확할 수 있습니다. 자세한 정보는 사실적으로 정확한 출력 생성을 참조하십시오.
검색 강화 생성 패턴
지식 기반의 정보를 사용하여 프롬프트에 컨텍스트를 포함하는 기술을 확장할 수 있습니다.
다음 도표는 검색 강화 생성 패턴을 보여줍니다. 다이어그램은 질문에 응답하는 예제를 표시하지만 동일한 워크플로우가 다른 유스 케이스를 지원합니다.
검색-증강 생성 패턴 은 다음 단계를 포함합니다
- 지식 기반에서 사용자의 질문과 관련된 컨텐츠를 검색하십시오.
- 가장 관련성이 높은 검색 결과를 컨텍스트로 프롬프트에 가져오고 다음 단락의 정보만 사용하여 "다음 질문에 응답" 과 같은 지시사항을 추가하십시오.
- 사용 중인 기초 모델이 지침에 맞춰 조정되지 않은 경우에만 : 예상되는 입력 및 출력 형식을 보여주는 몇 가지 예를 추가하십시오.
- 조합된 프롬프트 텍스트(지침 + 검색 결과 + 질문)를 기초 모델로 보냅니다.
- 기초 모델은 프롬프트의 맥락 정보를 사용하여 사실에 근거한 답변을 생성합니다.
검색 강화 생성의 기원
이 논문에서 검색 증강 생성 (RAG)이라는 용어가 소개되었습니다: 지식 집약적 NLP 작업을 위한 검색 증강 생성. "우리는 파라메트릭 메모리가 사전 훈련된 seq2seq 변환기이고, 비파라메트릭 메모리가 재훈련된 신경망 검색기로 액세스되는 Wikipedia의 밀집 벡터 인덱스인 RAG 모델을 구축합니다."
이 문서에서 RAG 모델 이라는 용어는 검색기 (특정 조회 인코더 및 벡터 기반 문서 검색 색인) 및 생성기 (사전 훈련된 특정 생성 언어 모델) 의 특정 구현을 의미합니다. 그러나 기본 검색 및 생성 접근 방식은 다른 검색기 컴포넌트 및 기초 모델을 사용하도록 일반화될 수 있습니다.
지식 기반 데이터베이스
지식 기반 데이터베이스는 다음과 같은 정보 포함 아티팩트의 콜렉션일 수 있습니다.
- 내부 회사 위키 페이지의 프로세스 정보
- GitHub 의 파일 (모든 형식: 마크다운, 일반 텍스트, JSON, 코드)
- 협업 도구의 메시지
- 긴 텍스트 블록을 포함할 수 있는 제품 문서의 주제
- SQL (Structured Query Language) 조회를 지원하는 데이터베이스의 텍스트 단락 (예: Db2 )
- PDF 파일로 저장되는 법적 계약과 같은 파일 콜렉션이 있는 문서 저장소
- Content Management 시스템의 고객 지원 티켓
검색기
검색기는 IBM Watson Discovery 와 같은 검색 도구 또는 GitHub에서 제공하는 것과 같은 검색 및 컨텐츠 API를 포함하여 지식 기반에서 관련 컨텐츠를 안정적으로 리턴하는 검색 및 컨텐츠 도구의 조합일 수 있습니다.
벡터 데이터베이스도 효과적인 검색기입니다. 벡터 데이터베이스는 데이터뿐만 아니라 데이터의 벡터 임베딩도 저장합니다. 이는 시맨틱 의미를 캡처하는 데이터의 숫자 표현입니다. 조회 시 조회 텍스트의 벡터 임베딩이 관련 일치를 찾는 데 사용됩니다.
IBM watsonx.ai 벡터 데이터베이스는 포함되어 있지 않지만 다음에서 기초 모델을 사용할 수 있습니다. watsonx.ai 시중의 모든 벡터 데이터베이스와 함께 사용할 수 있습니다. 예제 노트북은 Cloud Pak for Data, Elasticsearch 와 같은 인기 있는 벡터 데이터베이스에 연결하는 단계를 보여줍니다.
리트리버가 벡터화된 텍스트를 사용하는 RAG 패턴을 구현하는 데 도움이 되도록, watsonx.ai 는 문장과 구절을 벡터로 변환하는 데 사용할 수 있는 임베딩 API와 임베딩 모델을 제공합니다. 이러한 유형의 RAG 구현에 대한 자세한 내용은 검색 강화 생성 작업 에 벡터화된 텍스트 사용하기를 참고하세요.
생성 프로그램
생성기 컴포넌트는 watsonx.ai에 있는 모든 모델을 사용할 수 있습니다. 이 모델은 사용자의 유스 케이스, 프롬프트 형식 및 컨텍스트에 대해 가져오는 컨텐츠에 적합합니다.
샘플 프로젝트
검색 강화 생성을 사용하여 질문과 답변 솔루션을 구현하는 노트북과 기타 자산이 포함된 샘플 프로젝트를 가져옵니다. 이 프로젝트는 다음 작업을 수행하는 방법을 보여줍니다:
- HTML, PDF, DOC 또는 PPT 파일을 지식창고로 사용하고 Elasticsearch 벡터 인덱스를 검색기로 사용하세요. (Elasticsearch 서비스 인스턴스를 별도로 생성해야 합니다.)
- 질문과 관련된 정보를 찾기 위해 벡터 인덱스를 쿼리하는 함수( Python )를 작성한 다음, 기초 모델을 추론하고 생성된 답변에 환각 내용이 있는지 확인합니다.
- 기초 모델에 효과적인 프롬프트를 포맷하는 데 도움이 되는 프롬프트 템플릿을 사용하십시오.
- watsonx.ai Python 라이브러리의 RAG 유틸리티를 사용하여 패턴을 효율적으로 따르세요.
- 생성된 답변에 대한 사용자 피드백을 수집하고 분석하는 기능을 포함하여 RAG 구현의 다음 단계를 구현하세요.
' RAG 액셀러레이터와의 Q&A 샘플 프로젝트를 사용해 보세요.
자세한 내용은 RAG 액셀러레이터와의 Q&A를 참조하십시오.
예
다음의 예는 검색 강화 생성 패턴을 적용하는 방법을 보여줍니다.
예 | 설명 | 링크 |
---|---|---|
간단한 소개 | 소규모 지식 기반 데이터베이스 및 단순 검색 컴포넌트를 사용하여 기본 패턴을 설명합니다. | 검색 강화 생성에 대한 소개 |
Discovery를 사용한 간단한 소개 | 이 샘플 노트북에서는 IBM Watson Discovery 의 간단한 기사를 지식 기반으로 사용하고 Discovery API를 사용하여 검색 조회를 수행합니다. | watsonx.ai 와 Discovery를 이용한 검색 증강 생성에 대한 간단한 소개 |
실제 예제 | watsonx.ai 문서에는 문서의 주제를 지식 기반으로 사용하여 기본적인 what-is 질문에 응답할 수 있는 검색 및 응답 기능이 있습니다. | watsonx.ai 의 질문에 기초 모델을 사용하여 답변하기 |
LangChain 의 예제 | LangChain watsonx.ai 의 검색 강화 생성을 지원하는 단계를 포함하고 있습니다. 데이터 검색, 지식 기반 데이터베이스 빌드 및 조회, 모델 테스트를 위한 명령을 소개합니다. | watsonx LangChain 사용하여 질문에 답변하기 |
LangChain 및 Elasticsearch 벡터 데이터베이스의 예제 | LangChain 을 사용하여 임베딩 모델을 Elasticsearch 벡터 데이터베이스의 문서에 적용하는 방법을 보여줍니다. 그런 다음 노트북은 데이터 저장소를 인덱싱하고 사용하여 수신 질문에 대한 응답을 생성합니다. | watsonx, Elasticsearch, LangChain 사용하여 질문에 답하기(RAG) |
Elasticsearch Python 라이브러리의 예제 | Elasticsearch Python 라이브러리를 사용하여 임베딩 모델을 Elasticsearch 벡터 데이터베이스의 문서에 적용하는 방법을 보여줍니다. 그런 다음 노트북은 데이터 저장소를 인덱싱하고 사용하여 수신 질문에 대한 응답을 생성합니다. | watsonx Elasticsearch Python 라이브러리를 사용하여 질문에 답하기(RAG) |
LangChain과 SingleStoreDB 데이터베이스의 예시입니다 | watsonx SingleStoreDB 데이터베이스를 사용하여 검색 강화 생성을 대규모 언어 모델에 적용하는 방법을 보여줍니다. | SingleStoreDB 및 watsonx 사용한 RAG |
자세히 알아보기
다음 학습서를 사용해 보십시오.
상위 주제: 생성 AI 솔루션 개발