Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Функциональность Weaviate Vector Store находится на стадии предварительного просмотра, и улучшения, влекущие за собой существенные изменения, могут еще происходить в ограниченных случаях до выпуска.
Предупреждение
Функции хранилища векторов семантического ядра доступны в предварительной версии и улучшения, требующие критических изменений, могут по-прежнему возникать в ограниченных обстоятельствах перед выпуском.
Предупреждение
Функции хранилища векторов семантического ядра доступны в предварительной версии и улучшения, требующие критических изменений, могут по-прежнему возникать в ограниченных обстоятельствах перед выпуском.
Обзор
Соединитель Weaviate Vector Store можно использовать для доступа к данным и управления ими в Weaviate. Соединитель имеет следующие характеристики.
Область функций | Поддержка |
---|---|
Коллекция сопоставляется с | Коллекция Weaviate |
Поддерживаемые типы свойств ключей | GUID |
Поддерживаемые типы свойств данных |
|
Поддерживаемые типы свойств вектора |
|
Поддерживаемые типы индексов |
|
Поддерживаемые функции расстояния |
|
Поддерживаемые условия фильтров |
|
Поддержка нескольких векторов в записи | Да |
Поддерживается ли функция IsIndexed? | Да |
Поддерживается ли полнотекстовый индекс? | Да |
Поддерживается StorageName? | Нет, используйте JsonSerializerOptions и JsonPropertyNameAttribute вместо этого.
Дополнительные сведения см. здесь. |
Поддерживается гибридный поиск? | Да |
Область функций | Поддержка |
---|---|
Коллекция сопоставляется с | Коллекция Weaviate |
Поддерживаемые типы свойств ключей | GUID |
Поддерживаемые типы свойств данных |
|
Поддерживаемые типы свойств вектора |
|
Поддерживаемые типы индексов |
|
Поддерживаемые функции расстояния |
|
Поддерживаемые условия фильтров |
|
Поддержка нескольких векторов в записи | Да |
Поддерживается IsFilterable? | Да |
Поддерживается ЛиFullTextSearchable? | Да |
Скоро.
Ограничения
Важные ограничения функциональных возможностей соединителя Weaviate.
Область функций | Обходное решение |
---|---|
Использование свойства vector для объектов с одним вектором не поддерживается | Вместо этого поддерживается использование свойства vectors. |
Предупреждение
Weaviate требует, чтобы имена коллекций начинались с заглавной буквы. Если вы не укажете имя коллекции с заглавной буквой, Weaviate вернет ошибку при попытке создать коллекцию. Появится сообщение об ошибке Cannot query field "mycollection" on type "GetObjectsObj". Did you mean "Mycollection"?
, а mycollection
– это имя вашей коллекции. Если в этом примере изменить имя коллекции на Mycollection
, это устранит ошибку.
Начало работы
Добавьте пакет NuGet соединителя Weaviate Vector Store в ваш проект.
dotnet add package Microsoft.SemanticKernel.Connectors.Weaviate --prerelease
Можно добавить хранилище векторов в контейнер внедрения зависимостей, доступный в KernelBuilder
, или в IServiceCollection
с использованием методов расширения, предоставляемых Семантическим Ядром.
Хранилище векторов Weaviate использует HttpClient
для взаимодействия со службой Weaviate. Существует два варианта предоставления URL-адреса или конечной точки для службы Weaviate.
Его можно предоставить с помощью параметров или задать базовый адрес объекта HttpClient
.
В первом примере показано, как задать URL-адрес службы с помощью параметров.
Кроме того, обратите внимание, что эти методы будут получать экземпляр HttpClient
из поставщика внедрения зависимостей для вызова службы Weaviate.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), apiKey: null);
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), apiKey: null);
Также предоставляются перегрузки, в которых можно указать собственные HttpClient
.
В этом случае можно задать URL-адрес службы с помощью HttpClient
BaseAddress
параметра.
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
kernelBuilder.Services.AddWeaviateVectorStore(_ => client);
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
builder.Services.AddWeaviateVectorStore(_ => client);
Вы также можете напрямую создать экземпляр векторного хранилища Weaviate.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var vectorStore = new WeaviateVectorStore(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") });
Можно создать прямую ссылку на именованную коллекцию.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var collection = new WeaviateCollection<Guid, Hotel>(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") },
"Skhotels");
При необходимости можно передать ключ API в качестве параметра при использовании любого из указанных выше механизмов, например.
using Microsoft.SemanticKernel;
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), secretVar);
Сопоставление данных
Соединитель Weaviate Vector Store предоставляет мэппер по умолчанию при сопоставлении модели данных с хранилищем. Weaviate требует, чтобы свойства были сопоставлены с идентификаторами, полезной нагрузкой и группами векторов. Средство сопоставления по умолчанию использует аннотации модели или определение записи для определения типа каждого свойства и выполнения этого сопоставления.
- Свойство модели данных, помеченное как ключ, будет сопоставлено со свойством Weaviate
id
. - Свойства модели данных, аннотированные как данные, будут сопоставлены с объектом Weaviate
properties
. - Свойства модели данных, аннотированные как векторы, будут сопоставлены с объектом Weaviate
vectors
.
Преобразователь по умолчанию использует System.Text.Json.JsonSerializer
для преобразования в схему хранилища.
Это означает, что использование объекта JsonPropertyNameAttribute
поддерживается, если требуется другое имя хранилища для имени свойства модели данных.
Ниже приведен пример модели данных с JsonPropertyNameAttribute
набором и способом представления в Weaviate.
using System.Text.Json.Serialization;
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public Guid HotelId { get; set; }
[VectorStoreData(IsIndexed = true)]
public string HotelName { get; set; }
[VectorStoreData(IsFullTextIndexed = true)]
public string Description { get; set; }
[JsonPropertyName("HOTEL_DESCRIPTION_EMBEDDING")]
[VectorStoreVector(4, DistanceFunction = DistanceFunction.CosineDistance, IndexKind = IndexKind.QuantizedFlat)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
{
"id": "11111111-1111-1111-1111-111111111111",
"properties": { "HotelName": "Hotel Happy", "Description": "A place where everyone can be happy." },
"vectors": {
"HOTEL_DESCRIPTION_EMBEDDING": [0.9, 0.1, 0.1, 0.1],
}
}
Начало работы
Добавьте зависимости для соединителя Weaviate Vector Store в ваш проект.
pip install semantic-kernel[weaviate]
Затем вы можете создать векторное хранилище, используя параметры среды для подключения:
Для использования Weaviate Cloud:
- URL-адрес: WEAVIATE_URL
- api_key: WEAVIATE_API_KEY
Для использования Weaviate Local (т. е. Weaviate в контейнере Docker):
- local_host: WEAVIATE_LOCAL_HOST
- local_port: WEAVIATE_LOCAL_PORT
- local_grpc_port: WEAVIATE_LOCAL_GRPC_PORT
Если вы хотите использовать встроенное:
- use_embed: WEAVIATE_USE_EMBED
Они должны быть заданы исключительно, поэтому существует только один набор из приведенного выше набора, в противном случае это приведет к возникновению исключения.
from semantic_kernel.connectors.weaviate import WeaviateStore
store = WeaviateStore()
Кроме того, вы также можете передать собственный клиент MongoDB, если вы хотите больше контроля над созданием клиента.
import weaviate
from semantic_kernel.connectors.weaviate import WeaviateStore
client = weaviate.WeaviateAsyncClient(...)
store = WeaviateStore(async_client=client)
Вы также можете создать коллекцию напрямую без хранилища.
from semantic_kernel.connectors.weaviate import WeaviateCollection
# `hotel` is a class created with the @vectorstoremodel decorator
collection = WeaviateCollection(
collection_name="my_collection",
record_type=hotel
)
Сериализация
Клиент Weaviate возвращает собственные объекты, которые анализируются и преобразуются в словари в обычном порядке. Подробнее об этой концепции см. в документации по сериализации .
Скоро
Дополнительные сведения в ближайшее время.