메모리 내 커넥터 사용(미리 보기)
Warning
의미 체계 커널 벡터 저장소 기능은 미리 보기 상태이며 릴리스 전에 제한된 상황에서도 호환성이 손상되는 변경이 필요한 개선 사항이 계속 발생할 수 있습니다.
개요
메모리 내 벡터 저장소 커넥터는 외부 데이터베이스를 사용하지 않고 메모리에 데이터를 저장하는 의미 체계 커널에서 제공하는 벡터 저장소 구현입니다. 이 벡터 저장소는 프로토타입 시나리오 또는 고속 메모리 내 작업이 필요한 경우에 유용합니다.
커넥터의 특징은 다음과 같습니다.
기능 영역 | 지원 |
---|---|
컬렉션이 다음으로 매핑됩니다. | 메모리 내 사전 |
지원되는 키 속성 형식 | 비교할 수 있는 모든 형식 |
지원되는 데이터 속성 형식 | 모든 형식 |
지원되는 벡터 속성 형식 | ReadOnlyMemory<float> |
지원되는 인덱스 형식 | 플랫 |
지원되는 거리 함수 |
|
지원되는 필터 조건 |
|
레코드에서 여러 벡터를 지원합니다. | 예 |
IsFilterable이 지원되는가요? | 예 |
IsFullTextSearchable이 지원되나요? | 예 |
StoragePropertyName이 지원되는가요? | 아니요, 스토리지가 메모리 내이고 데이터 재사용이 불가능하므로 사용자 지정 이름을 적용할 수 없습니다. |
시작
의미 체계 커널 코어 nuget 패키지를 프로젝트에 추가합니다.
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
의미 체계 커널에서 제공하는 확장 메서드를 사용하여 종속성 주입 컨테이너 또는 KernelBuilder
종속성 주입 컨테이너에 IServiceCollection
사용할 수 있는 종속성 주입 컨테이너에 벡터 저장소를 추가할 수 있습니다.
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddInMemoryVectorStore();
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddInMemoryVectorStore();
InMemory Vector Store 인스턴스를 직접 생성할 수 있습니다.
using Microsoft.SemanticKernel.Connectors.InMemory;
var vectorStore = new InMemoryVectorStore();
명명된 컬렉션에 대한 직접 참조를 생성할 수 있습니다.
using Microsoft.SemanticKernel.Connectors.InMemory;
var collection = new InMemoryVectorStoreRecordCollection<string, Hotel>("skhotels");
키 및 벡터 속성 조회
기본적으로 In-Memory 벡터 저장소 커넥터는 리플렉션을 사용하여 키 및 벡터의 값을 읽습니다. 키와 벡터는 데이터 모델의 직접 속성으로 간주됩니다.
키와 벡터가 데이터 모델의 직접 속성이 아닌 구조가 있는 데이터 모델이 필요한 경우 함수를 제공하여 이러한 값을 읽을 수 있습니다.
이 기능을 사용하는 경우 벡터 차원 크기 및 거리 함수에 대한 정보를 In-Memory 벡터 저장소에 전달할 수 있도록 VectorStoreRecordDefinition
제공해야 합니다.
var collection = new InMemoryVectorStoreRecordCollection<string, MyDataModel>(
"mydata",
new()
{
VectorStoreRecordDefinition = vectorStoreRecordDefinition,
KeyResolver = (record) => record.Key,
VectorResolver = (vectorName, record) => record.Vectors[vectorName]
});
private class MyDataModel
{
public string Key { get; set; }
public Dictionary<string, ReadOnlyMemory<float>> Vectors { get; set; }
}
개요
메모리 내 벡터 저장소 커넥터는 외부 데이터베이스를 사용하지 않고 메모리에 데이터를 저장하는 의미 체계 커널에서 제공하는 벡터 저장소 구현입니다. 이 벡터 저장소는 프로토타입 시나리오 또는 고속 메모리 내 작업이 필요한 경우에 유용합니다.
커넥터의 특징은 다음과 같습니다.
기능 영역 | 지원 |
---|---|
컬렉션이 다음으로 매핑됩니다. | 메모리 내 사전 |
지원되는 키 속성 형식 | 딕셔너리 키로 허용되는 모든 항목은 Python 설명서를 참조하십시오. 자세한 내용은 여기에서 확인하십시오. |
지원되는 데이터 속성 형식 | 모든 형식 |
지원되는 벡터 속성 형식 | list[float | int] | numpy 배열 |
지원되는 인덱스 형식 | 플랫 |
지원되는 거리 함수 |
|
레코드에서 여러 벡터를 지원합니다. | 예 |
is_filterable이 지원되나요? | 예 |
is_full_text_searchable가 지원됩니까? | 예 |
시작
의미 체계 커널 패키지를 프로젝트에 추가합니다.
pip install semantic-kernel
여기에서 저장소 및 컬렉션을 만들거나 컬렉션을 직접 만들 수 있습니다.
아래 코드 조각에서는 'DataModel'이라는 데이터 모델 클래스가 정의되어 있다고 가정합니다.
from semantic_kernel.connectors.memory.in_memory import InMemoryVectorStore
vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
명명된 컬렉션에 대한 직접 참조를 생성할 수 있습니다.
from semantic_kernel.connectors.memory.in_memory import InMemoryCollection
vector_collection = InMemoryCollection("collection_name", DataModel)
서비스 예정
추가 정보는 곧 제공될 예정입니다.