RAG 실험 설정 사용자 지정
AutoAI, 검색 증강 생성 솔루션을 구축할 때 실험 설정을 사용자 지정하여 결과에 맞게 조정할 수 있습니다.
기본 설정에 따라 RAG 실험을 실행하는 경우 AutoAI 프로세스가 선택합니다:
- 최적의 RAG 파이프라인을 검색할 때 최대화해야 하는 최적화 지표
- 사용 가능한 목록을 기반으로 시도할 수 있는 임베딩 모델
- 사용 가능한 목록에 따라 시도해 볼 수 있는 파운데이션 모델
RAG 실험을 더 잘 제어하려면 실험 설정을 사용자 지정할 수 있습니다. 필요한 실험 정의 정보를 입력한 후 실험 설정을 클릭하여 실험을 실행하기 전에 옵션을 사용자 지정합니다. 검토하거나 수정할 수 있는 설정은 세 가지 범주로 나뉩니다:
- 검색 및 생성 : RAG 패턴의 선택을 최적화하기 위해 사용할 측정 기준, 검색할 데이터의 양, 실험에 사용할 모델 AutoAI 을 선택합니다.
- 색인 : 데이터를 덩어리로 나누는 방법, 의미적 유사성을 측정하는 데 사용되는 지표, 실험에 사용할 수 있는 임베딩 모델 AutoAI 을 선택합니다.
- 추가 정보: 실험에 사용할 watsonx.ai 런타임 인스턴스와 환경을 검토하세요.
검색 및 생성 설정
RAG 파이프라인을 생성하는 데 사용되는 설정을 보거나 편집합니다.
최적화 지표
최적의 RAG 패턴을 검색할 때 최대화할 측정 기준을 선택하십시오. 최적화 지표와 그 구현 방법에 대한 자세한 내용은 RAG 지표를 참고하세요.
- 답변 충실도는 생성된 응답이 벡터 저장소에서 검색된 컨텍스트와 얼마나 일치하는지를 측정합니다. 점수는 생성된 응답 토큰 중 벡터 저장소에서 검색된 문맥에 포함된 토큰의 수를 세는 어휘 메트릭스를 사용하여 계산됩니다. 높은 점수는 응답이 검색된 맥락을 잘 나타낸다는 것을 의미합니다. 높은 충실도 점수가 반드시 답변의 정확성을 나타내는 것은 아닙니다. 측정 기준이 어떻게 구현되는지에 대한 자세한 정보는 충실도를 참고하세요.
- 답의 정확도는 벤치마크 파일에 제공된 정답과 비교하여 생성된 답의 정확도를 측정합니다. 여기에는 검색된 맥락의 관련성과 생성된 응답의 품질이 포함됩니다. 점수는 생성된 응답에 포함된 실제 응답 토큰의 수를 세는 어휘 메트릭스를 사용하여 계산됩니다. 측정 기준이 어떻게 구현되는지에 대한 자세한 정보는 정확성을 참고하세요.
- 컨텍스트 정확도는 벡터 스토어에서 검색된 컨텍스트가 벤치마크에서 제공된 실제 컨텍스트와 어느 정도 일치하는지를 나타냅니다. 점수는 검색된 챕터들 중에서 실제 맥락의 순위에 따라 계산됩니다. 실제 상황과 가장 근접한 것이 목록의 맨 위에 있을수록 점수가 높아집니다. 메트릭이 구현되는 방식에 대한 자세한 내용은 문맥 정확도를 참조하세요.
판사로서의 대규모 언어 모델 ( LLMaaJ )
LLM-as-a-Judge( LLMaaJ ) 메트릭을 사용하여 최적화하도록 선택할 수도 있습니다:
- 성실하게 답변 ( LLMaaJ )
- 정답 ( LLMaaJ )
LLMaaJ 메트릭은 표준 메트릭과 동일한 품질을 측정하지만 토큰 중첩에 기반한 공식을 사용하는 대신 LLM을 사용하여 생성된 출력의 품질을 평가합니다. LLM은 선택한 메트릭에 따라 질문, 생성된 출력, 검색된 컨텍스트 또는 벤치마크 답변이 포함된 프롬프트를 표시합니다. 그런 다음 LLM은 산출물이 의미론적으로 정확하고 사실적으로 올바른지, 문서 색인에서 검색된 데이터와 일치하는지 평가합니다. 공식 기반 채점에 비해 LLM은 특히 주관식이나 복잡한 답변에 대해 더 정확하고 미묘한 평가를 제공할 수 있습니다. LLM은 유효한 의역을 인식하고, 환각을 감지하며, 사람의 판단을 더 잘 반영하여 보다 철저한 평가를 제공할 수 있기 때문입니다.
검색 방법
관련 데이터 검색을 위해 자동으로 구성을 선택하거나 구성 설정을 편집할 수 있습니다. 검색 방법은 문서를 필터링하고 순위를 매기는 방식이 다릅니다.
창 검색 방법 또는 간편 검색 방법을 선택합니다.
- 창 검색 방법은 원본 문서에 있는 내용에 따라 검색된 덩어리 앞뒤에 추가 덩어리를 배치하는 것입니다. 이 방법은 원래 검색된 덩어리에서 누락되었을 수 있는 더 많은 맥락을 포함하는 데 유용합니다. 창 검색은 다음과 같이 작동합니다
- 검색 : 벡터 저장소에서 가장 관련성이 높은 문서 덩어리를 찾습니다.
- 확장 : 발견된 각 챕터에 대해, 문맥을 제공하기 위해 주변의 챕터를 가져옵니다.
- 각 청크는 메타데이터에 그 순서 번호를 저장합니다.
- 청크를 검색한 후, 청크 메타데이터를 사용하여 동일한 문서에서 인접한 청크를 가져옵니다. 예를 들어,
window_size
가 2라면, 그 앞에 2개의 청크를 추가하고 그 뒤에 2개의 청크를 추가합니다. - 병합 : 창 안에 있는 중복되는 텍스트를 결합하여 중복을 제거합니다.
- 메타데이터 처리 : 동일한 키를 유지하고 값을 목록으로 그룹화하여 메타데이터 사전을 병합합니다.
- 반환 : 병합된 창을 새로운 덩어리로 출력하여 원래 창을 대체합니다.
- 간단한 검색 방법으로 벡터 저장소에서 가장 관련성이 높은 덩어리를 찾습니다.
- 창 검색 방법은 원본 문서에 있는 내용에 따라 검색된 덩어리 앞뒤에 추가 덩어리를 배치하는 것입니다. 이 방법은 원래 검색된 덩어리에서 누락되었을 수 있는 더 많은 맥락을 포함하는 데 유용합니다. 창 검색은 다음과 같이 작동합니다
청크의 개수를 1부터 10까지 선택합니다. 검색 청크의 수는 검색된 텍스트 구절이 분할되는 작은 청크의 수를 결정합니다.
창 검색 방법을 선택하면 창 크기를 1에서 4까지 설정할 수 있습니다. 창 크기는 색인된 문서에서 정보를 검색할 때 모델이 고려하는 인접한 청크의 수입니다.
선택적으로 하이브리드 전략을 선택하여 출력 품질을 개선할 수 있습니다. 하이브리드 전략은 희소 임베딩 벡터와 고밀도 임베딩 벡터를 결합하여 벡터 데이터베이스에서 유사성 검색을 수행합니다. 희소 임베딩은 정확한 키워드 일치에 우선순위를 두고, 고밀도 임베딩은 의미적 유사성이 있는 출력에 우선순위를 둡니다. 희소 임베딩과 고밀도 임베딩을 결합하면 검색 정확도와 관련성이 향상되어 데이터베이스에서 보다 포괄적인 정보를 검색할 수 있습니다. 이 설정은 인메모리 크로마 벡터 데이터베이스에는 사용할 수 없습니다. Elasticsearch 벡터 데이터베이스를 사용하는 경우 ELSER 모델을 설치해야 합니다.
이러한 하이브리드 전략 옵션 중 하나를 선택하세요:
- RRF(상호 순위 융합) : 여러 소스의 순위를 보다 관련성 높은 단일 목록으로 결합합니다. Elasticsearch 벡터 데이터베이스와 함께 RRF를 사용하려면 Elasticsearch 버전 8.8 이상이 필요합니다.
- 가중치 : 출력에 중요도를 할당하고 가장 신뢰할 수 있는 출력에 최종 출력의 우선순위를 지정합니다.
- 없음 : 하이브리드 전략 없이 고밀도 임베딩만 사용합니다.
하이브리드 전략을 사용하는 경우 희소 임베딩 모델 제품군을 선택할 수 있습니다. 동일한 모델의 여러 버전이 설치된 경우 AutoAI 에서 가장 최신 버전을 사용합니다.
다음 모델 제품군 옵션 중 하나를 선택합니다:
- 자동 : 선택한 벡터 스토어와 벡터 스토어에 설치한 모델을 기반으로 모델을 자동으로 선택합니다. Elasticsearch 벡터 스토어를 사용 중이고 ELSER 모델이 설치되어 있는 경우 ELSER가 선택됩니다. 그러나 ELSER가 설치되어 있지 않으면 BM25 이 선택됩니다.
- ELSER : Elasticsearch 벡터 스토어에만 적용됩니다. ELSER 모델을 사용하려면 Elasticsearch 벡터 스토어에 설치해야 합니다.
- BM25 : Elasticsearch 및 Milvus 벡터 스토어 데이터베이스에 적용됩니다.
포함할 파운데이션 모델
제공된 파운데이션 모델 또는 사용자 지정 파운데이션 모델 중에서 선택할 수 있습니다.
기본적으로 RAG용 AutoAI 을 지원하는 사용 가능한 모든 제공 파운데이션 모델이 실험용으로 선택됩니다. 제공된 기초 모델 목록( AutoAI )을 수동으로 편집하여 RAG 패턴을 생성할 때 고려할 수 있습니다. 각 모델에 대해, 모델 세부사항을 클릭하면 모델에 대한 세부사항을 보거나 내보낼 수 있습니다.
설명과 함께 제공되는 기초 모델 목록은 작업별 기초 모델을 참조하세요.
사용자 지정 기초 모델을 사용하려면 사용자 지정 모델을 클릭하고 RAG 패턴 생성 시 고려할 모델( AutoAI )을 선택합니다. 사용자 지정 모델 목록에는 주문형 배포 모델과 실험을 실행 중인 프로젝트 및 사용자가 멤버로 있는 모든 스페이스에 배포된 사용자 지정 모델이 포함됩니다.
새 사용자 지정 기초 모델을 추가하려면 사용자 지정 기초 모델 배포를 참조하세요.
사용자 지정 기초 모델을 사용하여 실험을 코딩하는 방법에 대한 자세한 내용은 사용자 지정 기초 모델을 사용하여 AutoAI RAG 실험 코딩하기를 참조하세요.
완성할 수 있는 최대 RAG 패턴
실험 단계에서 완료할 RAG 패턴의 수를 최대 20개까지 지정할 수 있습니다. 숫자가 높을수록 더 많은 패턴을 비교하고 더 높은 점수를 받은 패턴을 얻을 수 있지만, 더 많은 컴퓨팅 자원을 소비합니다.
입력 언어 일치
기본적으로 AutoAI 은 프롬프트에 사용되는 언어를 자동으로 감지하여 모델에 동일한 언어로 응답하도록 지시합니다. 입력 언어를 지원하지 않는 모델은 RAG 패턴 검색에서 우선 순위가 낮아집니다. 사용 가능한 모든 모델을 고려하고 영어로만 응답을 생성하려면 이 설정을 해제하세요.
색인 작성 설정
문서 컬렉션에서 텍스트 벡터 데이터베이스를 만들기 위한 설정을 보거나 편집합니다.
청킹
데이터 청크에 대한 구성을 자동으로 선택하거나 구성 설정을 편집할 수 있습니다. 분할 설정은 벡터 저장소에 입력되기 전에 색인된 문서가 어떻게 더 작은 조각으로 나뉘는지를 결정합니다. 데이터를 챕터별로 묶으면 문서의 해당 챕터를 검색할 때 가장 관련성이 높은 챕터를 검색할 수 있습니다. 이를 통해 생성 모델은 가장 관련성 있는 데이터만 처리할 수 있습니다.
AutoAI RAG는 LangChain’s 재귀 텍스트 분할기를 사용하여 문서를 여러 개의 덩어리로 나눕니다. 이 방법은 문서를 계층적으로 분해하는 효과를 냅니다. 요청된 분할 크기보다 작은 분할이 될 때까지 가능한 한 모든 단락(그리고 문장, 그리고 단어)을 함께 유지하려고 합니다. 재귀적 챕터링 방법에 대한 자세한 내용은 랭체인 문서의 문자별로 재귀적으로 분할된 검색을 참고하세요.
데이터를 가장 잘 분할하는 방법은 사용 사례에 따라 다릅니다. 작은 단위는 텍스트와 더 세분화된 상호작용을 가능하게 해, 관련 콘텐츠에 대한 집중적인 검색을 가능하게 하는 반면, 큰 단위는 더 많은 맥락을 제공할 수 있습니다. 챕터 나누기 사용 사례의 경우, 다음에 대한 옵션을 하나 이상 지정하십시오
- 각 데이터 덩어리에 포함될 문자 수입니다.
- 데이터를 묶기 위해 겹쳐야 하는 문자 수입니다. 숫자는 청킹 크기보다 작아야 합니다.
선택된 옵션은 실험 단계에서 탐색되고 비교됩니다.
임베딩 모델
임베딩 모델은 챕터와 쿼리를 벡터로 인코딩하여 의미적 의미를 포착하는 검색 강화 생성 솔루션에 사용됩니다. 벡터화된 입력 데이터 청크는 벡터 저장소에 수집됩니다. 쿼리가 주어지면, 벡터화된 표현이 벡터 저장소에서 관련 덩어리를 검색하는 데 사용됩니다.
AutoAI 의 RAG 실험에 사용할 수 있는 임베딩 모델 목록은 watsonx.ai 에서 지원하는 인코더 모델을 참고하세요.
추가 정보
이 실험에 사용된 watsonx.ai 런타임 인스턴스와 환경 정의를 검토하세요.
실험 설정을 위한 구성 매개변수
AutoAI RAG 실험을 코딩하는 경우 rag_optimizer
객체를 사용하여 프로그래밍 방식으로 매개 변수를 구성할 수 있습니다. 사용자 지정 매개변수로 RAG 최적화 프로그램을 초기화하는 방법에 대한 자세한 내용은 AutoAI RAG 클래스 및 rag_optimizer로 작업하기를 참조하세요.
매개변수 | 설명 | 값 |
---|---|---|
이름 | 실험의 유효한 이름을 입력합니다 | 실험 이름 |
설명 | 선택 사항으로 실험을 설명합니다 | 실험 설명 |
청킹 | 문서 분할을 위한 청크 설정 | {"method": "recursive", "chunk_size": 256, "chunk_overlap": 128} |
embedding_models | 시도해 볼 모델 임베딩 | ibm/slate-125m-english-rtrvr intfloat/multilingual-e5-large |
검색 | 검색 설정 | AutoAIRAGRetrievalConfig 데이터클래스 사용 |
기초_모델 | 사용할 기초 모델 또는 사용자 지정 모델 | 작업별 기초 모델 참조AutoAIRAGModelConfig 또는 AutoAIRAGCustomModelConfig |
생성 | 생성 단계 구성 | {"language": {"auto_detect": False}} |
최대_개수_오브_래그_패턴 | 생성할 수 있는 최대 RAG 패턴 수 | 4-20 |
최적화_메트릭 | 최적화에 사용할 지표 이름 | faithfulness answer_correctness context_correctness |
다음은 RAG 최적화 프로그램을 초기화하고 각 매개변수를 구성하는 데 사용할 수 있는 코드의 예입니다.
검색 구성의 예입니다:
from ibm_watsonx_ai.foundation_models.schema import AutoAIRAGRetrievalConfig, AutoAIRAGHybridRankerParams, HybridRankerStrategy
from ibm_watsonx_ai.foundation_models.extensions.rag.retriever import RetrievalMethod
retrieval_config = AutoAIRAGRetrievalConfig(
method=RetrievalMethod.SIMPLE,
number_of_chunks=5,
window_size=2,
hybrid_ranker=AutoAIRAGHybridRankerParams(
strategy=HybridRankerStrategy.RRF,
sparse_vectors={"model_id": "elser_model_2"},
alpha=0.9,
k=70,
)
)
파운데이션 모델 구성의 예입니다:
from ibm_watsonx_ai.foundation_models.schema import (
AutoAIRAGModelConfig,
AutoAIRAGCustomModelConfig,
AutoAIRAGModelParams,
TextGenDecodingMethod
)
# Foundation model
model_id = "meta-llama/llama-3-1-8b-instruct"
# Foundation model with properties
fm = AutoAIRAGModelConfig(
model_id="ibm/granite-13b-instruct-v2",
parameters=AutoAIRAGModelParams(
decoding_method=TextGenDecodingMethod.SAMPLE,
min_new_tokens=5,
max_new_tokens=300,
max_sequence_length=4096,
),
prompt_template_text="My question {question} related to these documents {reference_documents}.",
context_template_text="My document {document}",
word_to_token_ratio=1.5,
)
# Custom foundation model with properties
custom_fm = AutoAIRAGCustomModelConfig(
deployment_id="<PASTE_DEPLOYMENT_ID_HERE>",
space_id="<PASTE_SPACE_ID_HERE>",
parameters=AutoAIRAGModelParams(
decoding_method=TextGenDecodingMethod.GREEDY,
min_new_tokens=5,
max_new_tokens=300,
max_sequence_length=4096,
),
prompt_template_text="My question {question} related to these documents {reference_documents}.",
context_template_text="My document {document}",
word_to_token_ratio=1.5,
)
foundation_models = [model_id, fm, custom_fm]
청킹 구성의 예입니다:
chunking_config = {
"method": "recursive",
"chunk_size": 256,
"chunk_overlap": 128,
}
사용자 지정 구성으로 RAG 옵티마이저를 초기화하는 예입니다:
from ibm_watsonx_ai.experiment import AutoAI
experiment = AutoAI(credentials, project_id=project_id)
rag_optimizer = experiment.rag_optimizer(
name="DEMO - AutoAI RAG ibm-watsonx-ai SDK documentation",
description="AutoAI RAG experiment grounded with the ibm-watsonx-ai SDK documentation",
embedding_models=["ibm/slate-125m-english-rtrvr", "intfloat/multilingual-e5-large"],
foundation_models=foundation_models,
retrieval=[retrieval_config],
chunking=[chunking_config],
generation={"language": {"auto_detect": False}},
max_number_of_rag_patterns=5,
optimization_metrics=[AutoAI.RAGMetrics.ANSWER_CORRECTNESS],
)
자세히 알아보기
상위 주제: RAG 실험 만들기