IBM watsonx.ai 에서 기본 모델을 사용하여 검색 기능이 보강된 생성 패턴을 적용하여 지식 기반의 정보를 기반으로 하는 사실적으로 정확한 출력을 생성할 수 있습니다.
이 비디오는 이 문서의 개념 및 태스크를 학습하기 위한 시각적 방법을 제공합니다.
비디오 챕터
[ 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
아이샤가 일반적인 사전 학습 데이터 세트에 포함된 많은 온라인 기사에서 좋아하는 색이 언급된 유명 인사가 아니라면, 프롬프트 시작 부분의 문맥이 없으면 어떤 foundation model 프롬프트 끝에서 정확한 문장을 안정적으로 완성할 수 없습니다.
팩트가 채워진 컨텍스트를 포함하는 텍스트로 모델을 프롬프트하는 경우 모델이 생성하는 출력이 더 정확할 수 있습니다. 자세한 정보는 사실적으로 정확한 출력 생성을 참조하십시오.
검색 기능 보강 생성 패턴
지식 기반의 정보를 사용하여 프롬프트에 컨텍스트를 포함하는 기술을 확장할 수 있습니다.
다음 다이어그램은 검색 기능이 보강된 생성 패턴을 설명합니다. 다이어그램은 질문에 응답하는 예제를 표시하지만 동일한 워크플로우가 다른 유스 케이스를 지원합니다.
검색 기능이 보강된 생성 패턴에는 다음 단계가 포함됩니다.
- 지식 기반에서 사용자의 질문과 관련된 컨텐츠를 검색하십시오.
- 가장 관련성이 높은 검색 결과를 컨텍스트로 프롬프트에 가져오고 다음 단락의 정보만 사용하여 "다음 질문에 응답" 과 같은 지시사항을 추가하십시오.
- 사용 중인 foundation model 인스트럭션에 맞춰 조정되지 않은 경우에만 해당됩니다: 예상되는 입력 및 출력 형식을 보여주는 몇 가지 예제를 추가합니다.
- 결합된 프롬프트 텍스트(지시 사항 + 검색 결과 + 질문)를 foundation model 보냅니다.
- foundation model 프롬프트의 문맥 정보를 사용하여 사실에 입각한 답변을 생성합니다.
검색 기능 보강 생성의 오리진
이 백서에서는 검색 증강 생성 (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 시중의 모든 벡터 데이터베이스와 함께 사용할 수 있습니다. 그만큼 예시 노트북 Chroma와 같은 널리 사용되는 벡터 데이터베이스에 연결하는 단계를 설명합니다. Elasticsearch.
검색기가 벡터화된 텍스트를 사용하는 RAG 패턴을 구현하는 데 도움을 주기 위해, watsonx.ai 문장과 구절을 벡터로 변환하는 데 사용할 수 있는 임베딩 API와 임베딩 모델을 제공합니다. 이 유형의 RAG 구현에 대한 자세한 정보는 검색 기능이 보강된 생성 태스크와 함께 벡터화된 텍스트 사용을 참조하십시오.
생성 프로그램
생성기 컴포넌트는 watsonx.ai에 있는 모든 모델을 사용할 수 있습니다. 이 모델은 사용자의 유스 케이스, 프롬프트 형식 및 컨텍스트에 대해 가져오는 컨텐츠에 적합합니다.
샘플 프로젝트
검색 기능 보강 생성을 사용하여 질문 및 응답 솔루션을 구현하는 노트북 및 기타 자산이 있는 샘플 프로젝트를 가져오십시오. 이 프로젝트는 다음 작업을 수행하는 방법을 보여줍니다:
- HTML, PDF, DOC 또는 PPT 파일을 지식창고로 사용하고 Elasticsearch 벡터 인덱스를 검색기로 사용하세요. (Elasticsearch 서비스 인스턴스를 별도로 생성해야 합니다.)
- 벡터 인덱스를 쿼리하여 질문과 관련된 정보를 검색한 다음, foundation model 추론하고 생성된 답변이 환각 콘텐츠인지 확인하는 Python 함수를 작성합니다.
- 프롬프트 템플릿을 사용하면 IBM granite-7b-lab 및 Meta Llama 3.1 기초 모델에 효과적인 포맷을 지정하는 데 도움이 됩니다.
- watsonx.ai Python 라이브러리의 RAG 유틸리티를 사용하여 패턴을 효율적으로 따르세요.
- 생성된 답변에 대한 사용자 피드백을 수집하고 분석하는 기능을 포함하여 RAG 구현의 다음 단계를 구현하세요.
' RAG 액셀러레이터와의 Q&A 샘플 프로젝트를 사용해 보세요.
예
다음 예는 검색 기능이 보강된 생성 패턴을 적용하는 방법을 보여줍니다.
예 | 설명 | 링크 |
---|---|---|
간단한 소개 | 소규모 지식 기반 데이터베이스 및 단순 검색 컴포넌트를 사용하여 기본 패턴을 설명합니다. | 검색 증강 세대 소개 |
Discovery를 사용한 간단한 소개 | 이 샘플 노트북에서는 IBM Watson Discovery 의 간단한 기사를 지식 기반으로 사용하고 Discovery API를 사용하여 검색 조회를 수행합니다. | watsonx.ai 및 Discovery를 통한 검색 증강 생성에 대한 간단한 소개 |
실제 예제 | watsonx.ai 문서에는 문서의 주제를 지식 기반으로 사용하여 기본적인 what-is 질문에 응답할 수 있는 검색 및 응답 기능이 있습니다. | foundation model 사용하여 watsonx.ai 질문에 답변하기 |
LangChain 의 예제 | watsonx.ai에서 LangChain 을 사용한 검색 기능 보강 생성의 지원을 보여주는 단계 및 코드가 포함되어 있습니다. 데이터 검색, 지식 기반 데이터베이스 빌드 및 조회, 모델 테스트를 위한 명령을 소개합니다. | 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 솔루션 개발