Indexación de vectores binarios para el vector de búsqueda
Azure AI Search admite un tipo binario empaquetado de Collection(Edm.Byte)
para reducir aún más la huella de almacenamiento y memoria de los datos vectoriales. Puede usar este tipo de datos para la salida de modelos como Modelos de inserción binaria v3 de Cohere.
Hay tres pasos para configurar un índice para los vectores binarios:
- Agregar un algoritmo de vector de búsqueda que especifica distancia de Hamming para la comparación de vectores binarios
- Agregar un perfil de vector que apunte al algoritmo
- Adición del perfil de vector a la definición de campo binario
En este artículo se da por supuesto que está familiarizado con la creación de un índice en Búsqueda de Azure AI. Usa las API de REST para ilustrar cada paso, pero también puede agregar un campo binario a un índice en Azure Portal.
Los tipos de datos binarios están disponibles con carácter general a partir de la versión de API 2024-07-01 y se asignan a campos mediante las API Create Index o Create Or Update Index.
Sugerencia
Si está investigando la compatibilidad de vectores binarios con su superficie más pequeña, también puede considerar las características de cuantificación de vectores y reducción de almacenamiento en Azure AI Search. Las entradas son incrustaciones float32 o float16. La salida se almacena en un formato mucho menor. Para obtener más información, consulte Reducir el tamaño del vector a través de la cuantificación, los tipos de datos estrechos y las opciones de almacenamiento.
Requisitos previos
- Vectores binarios, con 1 bit por dimensión, empaquetados en valores uint8 con 8 bits por valor. Estos se pueden obtener mediante modelos que generan directamente vectores "binarios empaquetados" o cuantificando vectores en vectores binarios del lado cliente durante la indexación y la búsqueda.
Limitaciones
- No se admite Azure Portal en el Asistente para importación y vectorización de datos.
- No se admiten campos binarios en la Aptitud AML que se usa para la vectorización integrada de modelos en el catálogo de modelos de Inteligencia artificial de Azure Studio.
Adición de un algoritmo de vector de búsqueda y un perfil de vector
Los algoritmos de vector de búsqueda se usan para crear estructuras de navegación de consulta durante la indexación. Para los campos de vectores binarios, las comparaciones vectoriales se realizan con la métrica de distancia de Hamming.
Para añadir un campo binario a un índice, configure una solicitud
Create or Update Index
utilizando la API REST o el portal Azure.En el esquema de índice, agregue una sección
vectorSearch
que especifique perfiles y algoritmos.Agregue uno o varios algoritmos de vector de búsqueda que tengan una métrica de similitud de
hamming
. Es habitual usar mundos pequeños jerárquicos navegables (HNSW), pero también se puede usar la distancia de Hamming con vecinos más próximos a K exhaustivos.Agregue uno o varios perfiles vectoriales que especifiquen el algoritmo.
En el siguiente ejemplo se muestra una configuración básica vectorSearch
:
"vectorSearch": {
"profiles": [
{
"name": "myHnswProfile",
"algorithm": "myHnsw",
"compression": null,
"vectorizer": null
}
],
"algorithms": [
{
"name": "myHnsw",
"kind": "hnsw",
"hnswParameters": {
"metric": "hamming"
}
},
{
"name": "myExhaustiveKnn",
"kind": "exhaustiveKnn",
"exhaustiveKnnParameters": {
"metric": "hamming"
}
}
]
}
Adición de un campo binario a un índice
La colección de campos de un índice debe incluir un campo para la clave de documento, los campos vectoriales y cualquier otro campo que necesites para escenarios de búsqueda híbrida.
Los campos binarios son de tipo Collection(Edm.Byte)
y contienen inserciones en formato empaquetado. Por ejemplo, si la dimensión de inserción original es 1024
, la longitud del vector binario empaquetado es ceiling(1024 / 8) = 128
. Para obtener el formulario empaquetado, establezca la propiedad vectorEncoding
en el campo.
- Agregue un campo a la colección de campos y asígnele el nombre.
- Establezca el tipo de datos en
Collection(Edm.Byte)
. - Establezca
vectorEncoding
enpackedBit
para la codificación binaria. - Establezca
dimensions
en1024
. Especifique la dimensión de vector original (desempaquetada). - Establezca
vectorSearchProfile
en un perfil definido en el paso anterior. - Haga que el campo se pueda buscar.
La siguiente definición de campo es un ejemplo de las propiedades que debe establecer:
"fields": [
. . .
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile",
"searchable": true
},
. . .
]
Consulte también
Los ejemplos de código del repositorio azure-search-vector-samples muestran flujos de trabajo de un extremo a otro que incluyen definición de esquema, vectorización, indexación y consultas.
Hay código de demostración para Python, C# y JavaScript.