경고
시맨틱 커널 벡터 저장소 기능은 미리 보기 상태에 있으며, 출시 전에 제한된 상황에서 호환성을 손상시킬 수 있는 변경이 필요한 개선이 발생할 수 있습니다.
벡터 저장소를 사용한 엔드투엔드 RAG 샘플
이 예제는 의미 체계 커널을 사용하는 RAG를 보여 주는 독립 실행형 콘솔 애플리케이션입니다. 샘플의 특징은 다음과 같습니다.
- 채팅 및 포함 서비스를 선택할 수 있습니다.
- 벡터 데이터베이스 선택 허용
- 하나 이상의 PDF 파일의 내용을 읽고 각 섹션에 대한 청크를 만듭니다.
- 각 텍스트 청크에 대한 임베딩을 생성하고 선택한 벡터 데이터베이스에 추가하거나 갱신합니다.
- 커널을 사용하여 벡터 저장소를 텍스트 검색 플러그 인으로 등록합니다.
- 플러그 인을 호출하여 더 많은 컨텍스트를 사용하여 AI 모델에 제공된 프롬프트를 보강합니다.
단순 데이터 수집 및 벡터 검색
벡터 저장소로 데이터 수집을 수행하고 벡터 검색을 수행하는 방법에 대한 두 가지 매우 간단한 예제는 Qdrant 및 InMemory 벡터 저장소를 사용하여 사용법을 보여 주는 두 가지 예제를 확인하세요.
여러 저장소가 있는 일반 코드
벡터 저장소는 키 유형 또는 각 지원 필드 유형과 관련하여 특정 측면에서 다를 수 있습니다. 그럼에도 불구하고 이러한 차이점에 관계없는 코드를 작성할 수 있습니다.
이를 보여 주는 데이터 수집 샘플은 다음을 참조하세요.
동일한 개념을 보여주는 벡터 검색 샘플은 다음 샘플을 참조하세요. 이러한 각 샘플은 동일한 공통 코드를 참조하며, 공통 코드와 함께 사용하기 위해 만드는 벡터 저장소의 유형에 따라 다릅니다.
- 공용 코드를 사용하여 Azure AI 검색 벡터 검색
- 공통 코드를 사용하여 InMemory 벡터 검색
- 공용 코드를 사용하여 Postgres 벡터 검색
- 공통 코드를 사용하여 Qdrant 벡터 검색
- 공통 코드를 사용하여 Redis 벡터 검색
동일한 레코드에서 여러 벡터 지원
벡터 저장소 추상화는 이를 지원하는 벡터 데이터베이스에 대해 동일한 레코드의 여러 벡터를 지원합니다. 다음 샘플에서는 여러 벡터를 사용하여 일부 레코드를 만들고 벡터 검색을 수행할 때 원하는 대상 벡터를 선택하는 방법을 보여 줍니다.
페이징을 사용하여 벡터 검색
벡터 저장소 추상화로 벡터 검색을 수행하는 경우 Top 및 Skip 매개 변수를 사용하여 페이징을 지원할 수 있습니다. 예를 들어 요청당 작은 결과 집합으로 응답하는 서비스를 빌드해야 합니다.
경고
일부 벡터 데이터베이스는 기본적으로 벡터 검색을 위해 Skip 기능을 지원하지 않으므로 일부 커넥터는 Skip + Top 레코드를 가져오고 클라이언트 쪽에서 건너뛰어 이 동작을 시뮬레이션해야 할 수 있습니다.
일반 데이터 모델 사용 및 사용자 지정 데이터 모델 사용
대신 데이터 모델을 정의하고 레코드 정의를 통해 스키마를 정의하지 않고 벡터 저장소 추상화 사용이 가능합니다. 이 예제에서는 사용자 지정 모델을 사용하여 벡터 저장소를 만들고 제네릭 데이터 모델을 사용하거나 그 반대로 읽는 방법을 보여 줍니다.
팁
제네릭 데이터 모델 사용에 대한 자세한 내용은 사용자 고유의 데이터 모델을 정의하지 않고 벡터 저장소 추상화 사용을 참조하세요.
Langchain을 사용하여 생성하고 수집한 컬렉션 사용
벡터 저장소 추상화는 다른 시스템(예: Langchain)을 사용하여 만들고 수집한 컬렉션에 액세스할 수 있습니다. interop가 올바르게 작동하도록 수행할 수 있는 여러 가지 방법이 있습니다. 예:
- Langchain 구현에서 사용한 스토리지 스키마와 일치하는 데이터 모델을 만듭니다.
- 필드에 대한 특수 스토리지 속성 이름과 함께 레코드 정의를 사용합니다.
다음 샘플에서는 이러한 방법을 사용하여 Langchain 호환 벡터 저장소 구현을 생성하는 방법을 보여 줍니다.
각 벡터 저장소에는 Langchain 호환 벡터 저장소를 생성하는 방법을 보여 주는 팩터리 클래스가 있습니다. 예를 들어 참조하세요.
Azure AI 검색 벡터 저장소를 사용한 엔드투엔드 RAG 샘플
이 예제는 두 개의 스크립트 집합으로, 첫 번째는 Azure AI 검색 Vector Store 설정의 기본 사항을 보여 줍니다. 두 번째 스크립트는 플러그 인을 만들고 이를 사용하여 RAG를 수행하는 방법을 보여 줍니다.
- 데이터 모델의 설명 및 이 샘플에 대해 Azure AI 검색를 설정하는 방법
- Azure AI 검색에서 레코드 만들기, 벡터 추가 및 레코드 업서팅
- 동일한 연결 및 데이터 모델을 사용하여 고급 RAG 대한 자동 함수 호출과 함께 사용할 수 있는 사용자 지정 함수를 만듭니다.
단순 데이터 수집 및 벡터 검색
또한 컬렉션 만들기, 레코드 추가, 마지막으로 검색 수행에 이르기까지 다양한 벡터 저장소로 시작할 수 있는 기본 사항을 보여 주는 샘플이 있습니다.
단순 데이터 수집 및 벡터 검색
벡터 저장소로 데이터 수집을 수행하고 벡터 검색을 수행하는 방법에 대한 간단한 예제는 Azure AI 검색, PostgreSQL, Redis 및 메모리 내 벡터 저장소를 사용하는 JDBC를 사용하는 예제를 확인하세요.