정보 검색 과제 살펴보기 - 크기 조정 및 정확도
RAG(검색 기반 생성)은 모델이 응답하기 전에 데이터에서 올바른 문단을 끌어와야 합니다. 콘텐츠가 증가함에 따라 크기 조정 및 정확도라는 두 가지 문제가 표시됩니다. 크기 조정 은 데이터 크기 및 액세스 패턴이 증가하는 방식과 결과가 얼마나 빨리 돌아오는지에 관한 것입니다. 정확도 는 해당 결과가 실제로 질문에 답하는지 여부에 관한 것입니다. 검색 속도가 느리거나 정확성이 떨어지는 경우 모델의 강도에 관계없이 경험이 저하됩니다.
Scale
RAG에서 모든 사용자 질문은 벡터를 통해 가장 가까운 인접 검색을 트리거합니다. 더 많은 행이 추가되고 더 많은 사용자가 한 번에 데이터를 쿼리하면 데이터 액세스 패턴이 느려지고 동시성 압력으로 인해 지연이 증가합니다.
Azure Database for PostgreSQL 내에서 검색을 유지하고 데이터베이스에서 결과를 검색하고 순위를 지정하는 방법을 결정합니다. 벡터 유사성 검색부터 pgvector 시작합니다. 데이터 집합이 커지면 쿼리가 모든 행과 비교하지 않도록 대략적인 인덱스를 사용합니다. 성능을 향상시키려면 pgvector은(는) IVFFlat 또는 HNSW와 같은 인덱스 옵션을 제공합니다. 매우 큰 데이터 집합의 경우, DiskANN와 pg_diskann 확장을 통해 높은 회수율과 높은 초당 쿼리 수(QPS), 그리고 대규모 규모에서도 낮은 대기 시간을 보장하도록 설계되었습니다.
정확도
빠른 쿼리는 잘못된 구절을 반환하는 경우 도움이 되지 않습니다. 관련 행을 누락하거나 순위를 잘못 지정하면 모델이 추측하게 됩니다.
데이터베이스에서 정확도를 2단계로 처리합니다. 먼저 임베딩과 일치하는 거리 함수와 크기에 대한 회수 및 대기 시간의 균형을 맞추는 인덱스를 사용하여 pgvector 생성합니다. 둘째, 필요할 때 순서를 개선합니다. SQL에서 azure_ai 확장의 의미 체계 연산자, 예를 들어 LLM 기반 관련성 순위를 위해 azure_ai.rank 와 같은 연산자를 사용하여 직접 결과를 재정렬할 수 있습니다.
이 패턴을 중심으로 전체 파이프라인 예제를 빌드하려는 경우 Azure Database for PostgreSQL에 대한 의미 체계 Ranker 솔루션 가속기도 있습니다. 두 방법 모두 PostgreSQL을 단일 데이터 계층으로 실행하도록 설계되었습니다.
관계가 도움이 되는 경우
일부 도메인은 연결 방식을 모델링하면 이점을 얻을 수 있습니다. 그래프 단계는 관계 및 눈에 띄는 신호를 사용하여 검색을 향상시킬 수 있습니다. 그래프 쿼리는 Apache AGE 확장을 통해 Azure Database for PostgreSQL에서 사용할 수 있습니다. GraphRAG는 검색정확도를 향상시키기 위해 벡터 검색과 그래프 쿼리를 결합하는 Microsoft Research 접근 방식입니다. 데이터에서 지식 그래프를 추출하고 해당 구조를 사용하여 큰 언어 모델에 더 나은 컨텍스트를 제공합니다.
측정 및 모니터링
주요 메트릭을 캡처하고 쿼리 성능에 대한 인사이트를 제공하는 모니터링 전략을 설정해야 합니다.
다음을 사용하여 RAG 쿼리 성능의 기준을 만듭니다.
- 쿼리 저장소 - 쿼리 텍스트, 런타임 및 대기 통계를 캡처하여 시간에 따른 상위 쿼리 및 추세를 볼 수 있습니다.
- Query Performance Insight - 유연한 서버에 대한 쿼리 저장소 데이터를 시각화하여 장기 실행 및 리소스가 많은 쿼리를 강조 표시합니다.
- Azure Monitor 메트릭 및 통합 문서 - 대기 시간, 연결, CPU, IO 등에 대한 서버 수준 차트 및 대시보드입니다.
이러한 도구는 RAG 파이프라인의 개선을 위한 병목 상태 및 영역을 식별하는 데 도움이 됩니다. 성능(규모)에 대한 결정을 내리는 데 도움이 되지만 검색 정확도를 보장하기 위한 다른 전략이 필요합니다.
정확도 측정:
정확도 측정은 규모 측정만큼 간단하지는 않지만 평가 단계에서 아키텍처 센터 문서의 일부 단원을 사용할 수 있습니다.
- 로그 요청 및 메트릭 - 모든 질문에 대해 질문 텍스트, PostgreSQL에서 검색된 행의 순위 및 거리, 모델에 전송된 정확한 컨텍스트 및 모델의 최종 대답을 저장합니다.
-
컴퓨팅 신호 - 애플리케이션 코드에서 다음 세 가지 간단한 신호를 계산합니다.
- 관련성 및 사용률 - 검색된 구절에도 답변의 핵심 문구가 표시되는 양과 해당 구절이 인용되거나 에코되는 빈도를 측정합니다.
- 근거 - 답변의 각 구체적 주장이 적어도 하나의 검색된 행을 뒷받침하는지 확인합니다.
- 완전성 - 질문의 주요 부분이 검색된 행의 지원 텍스트와 함께 답변에 포함되는지 확인합니다.
-
점수가 있는 변경 내용 안내 - 점수를 사용하여 변경 내용을 안내한 다음, 동일한 작은 테스트 집합을 다시 실행합니다.
- 답변이 질문의 일부를 놓치면 k 를 올리거나 청크를 조정합니다.
- 오른쪽 행이 표시되지 않는 경우 검색에서 더 많은 인접 항목이 고려되도록 프로브를 늘리거나 설정을 올립니다
IVFFlatpgvector.DiskANNl_value_is - 순서 지정이 문제인 경우 Azure Database for PostgreSQL에서 시맨틱 랭킹 솔루션을 사용하여 SQL에 재정렬 패스를 추가합니다.
- 관계가 중요한 경우 최종 벡터 단계 전에 Apache AGE 를 사용하여 짧은 그래프 단계를 추가합니다.
- 시간에 따른 추세 추적 - 모니터를 통해 속도뿐만 아니라 정확도가 향상되었음을 확인합니다.
애플리케이션이 증가함에 따라 애플리케이션의 성능을 다시 평가하고 필요에 따라 RAG 파이프라인을 조정합니다. 시간이 지남에 따라 검색 속도와 정확도를 모두 모니터링하는 것이 중요합니다.
주요 내용
Postgres RAG 경로에서는 데이터베이스 내에서 검색을 유지하여, 데이터 집합과 트래픽이 증가함에 따라 pgvector에서 시작하여 적절한 인덱스로 이동합니다. SQL에서 정렬이 더 엄격해야 하는 경우 의미 순위 패스를 추가합니다. 관계가 의미를 지닐 때 GraphRAG 를 가져와서 짧은 그래프 단계를 추가합니다. 정기적으로 평가하고 프로덕션 환경에서 모니터링하여 데이터 및 사용량이 변경됨에 따라 시스템이 빠르고 올바르게 유지되도록 합니다.