Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Advertencia
La funcionalidad de almacenamiento de vectores del kernel semántico se encuentra en versión preliminar y las mejoras que requieren modificaciones significativas pueden producirse en circunstancias limitadas antes de su lanzamiento.
No está disponible actualmente
Visión general
El conector Faiss Vector Store es una implementación del almacén de vectores proporcionada por el Kernel Semántico que no usa ninguna base de datos externa y almacena datos en memoria y vectores en un Índice Faiss. Utiliza el InMemoryVectorCollection
para las otras partes de los registros, mientras utiliza los índices Faiss para la búsqueda.
Este almacén de vectores es útil para escenarios de creación de prototipos o en los que se requieren operaciones de alta velocidad en memoria.
El conector tiene las siguientes características.
Área de características | Apoyo |
---|---|
La colección asigna a | Diccionario de índices en memoria y Faiss |
Tipos de propiedades de clave admitidos | Cualquiera que pueda ser una clave dict, consulte la documentación de python para obtener más información aquí |
Tipos de propiedad de datos admitidos | Cualquier tipo |
Tipos de propiedades vectoriales admitidos |
|
Tipos de índice admitidos | Plano (consulte los índices personalizados) |
Funciones de distancia compatibles |
|
Admite varios vectores en un registro | Sí |
¿is_filterable es compatible? | Sí |
¿is_full_text_searchable es compatible? | Sí |
Empezar
Agregue el paquete kernel semántico al proyecto.
pip install semantic-kernel[faiss]
En los fragmentos de código siguientes, se supone que tiene una clase de modelo de datos definida denominada "DataModel".
from semantic_kernel.connectors.faiss import FaissStore
vector_store = FaissStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
Es posible construir una referencia directa a una colección con nombre.
from semantic_kernel.connectors.faiss import FaissCollection
vector_collection = FaissCollection(DataModel, collection_name="collection_name")
Índices personalizados
El conector Faiss se limita al tipo de índice Plano.
Dada la complejidad de los índices de Faiss, puede crear sus propios índices, incluida la creación del paquete faiss-gpu y el uso de índices de ese tipo. Al hacerlo, se omiten las métricas definidas en un campo vectorial. Si tiene varios vectores en el modelo de datos, puede pasar índices personalizados solo para los que desee y permitir que se creen los índices integrados, con un índice plano y la métrica definida en el modelo.
Es importante tener en cuenta que, si el índice requiere entrenamiento, asegúrese de hacerlo también, siempre que usemos el índice, se realiza una comprobación en el atributo is_trained
del índice.
El índice siempre está disponible (personalizado o integrado) en la propiedad indexes
de la colección. Puede usar esto para obtener el índice y asegurarse de realizar las operaciones que desee en él. Así podrá entrenar después, siempre asegurándose de completar estos pasos antes de querer aplicar cualquier operación CRUD sobre él.
Para pasar su índice personalizado, use:
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}
)
o:
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
)