Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Функции хранилища векторов семантического ядра доступны в предварительной версии, и улучшения, требующие существенных изменений, могут по-прежнему возникать в ограниченных случаях перед выпуском.
В настоящее время не поддерживается
Обзор
Соединитель Faiss Vector Store — это реализация векторного хранилища, предоставляемая семантическим ядром, которая не использует внешнюю базу данных и сохраняет данные в памяти, а векторы — в индексе Faiss. Он использует InMemoryVectorCollection
для других частей записей, используя индексы Faiss для поиска.
Это векторное хранилище полезно для сценариев прототипа или для выполнения высокоскоростных операций в памяти.
Соединитель имеет следующие характеристики.
Область функций | Поддержка |
---|---|
Коллекция сопоставляется с | Словарь индексов в оперативной памяти и Faiss |
Поддерживаемые типы свойств ключей | Все, что разрешено использовать в качестве ключа словаря, см. документацию по Python для получения подробных сведений здесь |
Поддерживаемые типы свойств данных | Любой тип |
Поддерживаемые типы свойств вектора |
|
Поддерживаемые типы индексов | Плоский (см. пользовательские индексы) |
Поддерживаемые функции расстояния |
|
Поддержка нескольких векторов в записи | Да |
Поддерживается ли is_filterable? | Да |
Поддерживается ли is_full_text_searchable? | Да |
Начало работы
Добавьте пакет семантического ядра в проект.
pip install semantic-kernel[faiss]
В фрагментах ниже предполагается, что у вас есть класс модели данных, определенный с именем DataModel.
from semantic_kernel.connectors.faiss import FaissStore
vector_store = FaissStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
Можно создать прямую ссылку на именованную коллекцию.
from semantic_kernel.connectors.faiss import FaissCollection
vector_collection = FaissCollection(DataModel, collection_name="collection_name")
Пользовательские индексы
Соединитель Faiss поддерживает только тип плоского индекса.
Учитывая сложность индексов Faiss, вы можете создать собственный индекс(es), включая создание пакета faiss-gpu и использование индексов из этого. При этом все метрики, определенные в поле вектора, игнорируются. Если в вашей модели данных есть несколько векторов, вы можете передать пользовательские индексы только для тех, которые вам нужны, и позволить создавать встроенные индексы с плоским индексом и метрикой, определенной в модели.
Важно отметить, что если индекс требует обучения, обязательно сделайте это; когда мы используем индекс, выполняется проверка атрибута is_trained
индекса.
Индекс всегда доступен (настраиваемый или встроенный) в свойстве indexes
коллекции. Вы можете использовать это для получения индекса и выполнения любых операций, которые вам нужны, чтобы затем произвести обучение; только убедитесь, что сделали это до любых операций CRUD над ним.
Чтобы передать пользовательский индекс, используйте один из следующих методов:
import faiss
from semantic_kernel.connectors.faiss import FaissCollection
index = faiss.IndexHNSW(d=768, M=16, efConstruction=200) # or some other index
vector_collection = FaissCollection(
record_type=DataModel,
collection_name="collection_name",
indexes={"vector_field_name": index}
)
или:
import faiss
from semantic_kernel.connectors.faiss import FaissCollection
index = faiss.IndexHNSW(d=768, M=16, efConstruction=200) # or some other index
vector_collection = FaissCollection(
record_type=DataModel,
collection_name="collection_name",
)
await vector_collection.ensure_collection_exists(
indexes={"vector_field_name": index}
)
# or when you have only one vector field:
await vector_collection.ensure_collection_exists(
index=index
)