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.
Se aplica a: SQL Server 2025 (17.x)
Base de datos SQL de Azure SQL Database
deAzure SQL Managed Instance
en Microsoft Fabric
Este artículo contiene preguntas frecuentes sobre vectores e incrustaciones en el motor de base de datos de SQL.
Nota:
Las funcionalidades vectoriales están disponibles en Instancia Administrada de Azure SQL configurada con la directiva Always-up-to-date.
¿Cómo puedo mantener la incrustación actualizada?
Actualice los embeddings cada vez que los datos subyacentes que representan cambian. Esto es especialmente importante para escenarios en los que los datos son dinámicos, como el contenido generado por el usuario o las bases de datos actualizadas con frecuencia. Para obtener más información sobre varias estrategias para mantener actualizadas las incrustaciones, consulte Database and AI: solutions for keeping embeddings updated(Base de datos e INTELIGENCIA ARTIFICIAL: soluciones para mantener actualizadas las insaciones).
¿Cuál es el almacenamiento y procesamiento adicional en la búsqueda de vectores?
La sobrecarga para la búsqueda de vectores implica principalmente el almacenamiento del tipo de datos vectorial y los recursos computacionales necesarios para la indexación y la búsqueda. El tipo de datos vectorial está diseñado para ser eficaz en términos de almacenamiento, pero la sobrecarga exacta puede variar en función del tamaño ( el número de dimensiones) de los vectores almacenados.
Para obtener más información sobre cómo elegir el tamaño de vector correcto, consulte Inserción de modelos y dimensiones: optimización de la relación de uso de recursos de rendimiento.
Una página de datos de SQL Server puede contener hasta 8060 bytes, por lo que el tamaño del vector afecta al número de vectores que se pueden almacenar en una sola página. Por ejemplo, si tiene un vector con 1 024 dimensiones, y cada dimensión es un float de precisión simple (4 bytes), el tamaño total del vector sería de 4 104 bytes (4 096 bytes de carga útil + 8 bytes de cabecera). Esto limita el número de vectores que pueden caber en una sola página a una.
¿Qué modelo de inserción debo usar y cuándo?
Hay muchos modelos de inserción disponibles y la elección de cuál usar depende del caso de uso específico y del tipo de datos que se están procesando. Algunos modelos admiten varios idiomas, mientras que otros admiten datos multimodales (texto, imágenes, etc.). Algunos solo están disponibles en línea, otros se pueden ejecutar localmente.
Además del propio modelo, tenga en cuenta el tamaño del modelo y el número de dimensiones que genera. Los modelos más grandes pueden proporcionar una mayor precisión, pero requieren más recursos computacionales y espacio de almacenamiento, pero en muchos casos, tener más dimensión no cambia realmente la calidad de los casos de uso comunes.
Para obtener más información sobre cómo elegir el modelo de inserción adecuado, consulte Inserción de modelos y dimensiones: optimización de la relación de uso de recursos de rendimiento.
¿Cómo decidir cuándo usar valores de punto flotante de precisión única (4 bytes) frente a precisión media (2 bytes) para vectores?
Al almacenar vectores de inserción en una base de datos, la elección entre floats de precisión única (float32) y de precisión media (float16) suele reducirse a equilibrar la eficacia del almacenamiento con fidelidad numérica.
Afortunadamente, las incrustaciones no suelen ser muy sensibles a pequeños cambios de precisión.
Las incrustaciones son representaciones vectoriales densas que se usan en tareas como búsqueda semántica, sistemas de recomendaciones y procesamiento de lenguaje natural. Estos vectores suelen ser la salida de redes neuronales, que son inherentemente tolerantes a pequeñas variaciones numéricas. Como resultado, reducir la precisión de float32 a float16 normalmente tiene un impacto mínimo en la calidad de las comparaciones de similitudes o tareas posteriores, especialmente durante la inferencia.
El uso float16 de puede reducir significativamente el uso de almacenamiento y memoria, lo que resulta especialmente beneficioso al trabajar con conjuntos de datos de inserción a gran escala.
¿Y los vectores dispersos?
En este momento, el tipo de datos vectorial del motor de base de datos SQL está diseñado para vectores densos, que son matrices de números de punto flotante donde la mayoría de los elementos son distintos de cero. Los vectores dispersos, que contienen un número significativo de cero elementos, no se admiten de forma nativa.
¿Cuáles son algunas pruebas comparativas de rendimiento para la búsqueda de vectores de SQL?
El rendimiento puede variar ampliamente en función del caso de uso específico, el tamaño del conjunto de datos y la complejidad de las consultas. Sin embargo, las funcionalidades de búsqueda vectorial de SQL Server están diseñadas para ser eficaces y escalables, aprovechando las técnicas de indexación para optimizar el rendimiento de la búsqueda.
¿Qué ocurre si tengo más de una columna que me gustaría usar para generar incrustaciones?
Si tiene varias columnas que desea usar para generar incrustaciones, tiene dos opciones principales:
- Cree una inserción para cada columna o
- Concatene los valores de varias columnas en una sola cadena y, a continuación, genere una sola inserción para esa cadena concatenada.
Para obtener más información sobre las dos opciones y las consideraciones de diseño de base de datos relacionadas, consulte Inserción de modelos eficientes y elegantes.
¿Qué tal reordenar?
Volver a clasificar es una técnica que se usa para mejorar la relevancia de los resultados de búsqueda mediante la reevaluación de los resultados iniciales en función de criterios o modelos adicionales. En el motor de base de datos de SQL, puede implementar una nueva clasificación combinando la búsqueda de vectores con texto completo (que proporciona clasificación BM25) o consultas SQL adicionales o modelos de aprendizaje automático para refinar los resultados en función de una lógica de negocios o preferencias de usuario específicas.
Para obtener más información, consulte Mejora de las funcionalidades de búsqueda con la búsqueda híbrida y la re-clasificación de RRF.
¿Cuándo usar AI Search (ahora AI Foundry) frente al uso de SQL para escenarios de búsqueda de vectores?
AI Search (ahora AI Foundry) es un servicio especializado diseñado para escenarios de búsqueda avanzada, como búsqueda de vectores, procesamiento de lenguaje natural e información controlada por IA. Proporciona un conjunto completo de características para crear aplicaciones de búsqueda inteligente, como la compatibilidad integrada con varios modelos de inteligencia artificial, algoritmos de clasificación avanzados e integración con otros servicios de inteligencia artificial.
El motor de base de datos SQL proporciona la capacidad de almacenar cualquier tipo de datos y ejecutar cualquier tipo de consulta: estructurado y no estructurado, y para realizar búsquedas vectoriales en esos datos. Es una buena opción para escenarios en los que necesita realizar búsquedas en todos estos datos juntos y no quiere usar un servicio independiente para la búsqueda que complicaría la arquitectura. El motor de base de datos sql ofrece características de seguridad empresariales críticas para asegurarse de que los datos estén siempre protegidos, como la seguridad de nivel de fila (RLS), el enmascaramiento dinámico de datos (DDM), Always Encrypted, las tablas de libro de contabilidad inmutables y el cifrado de datos transparente (TDE).
Este es un ejemplo de una sola consulta que se puede ejecutar en Azure SQL o SQL Server que combina datos vectoriales, geoespaciales, estructurados y no estructurados a la vez. La consulta de ejemplo recupera los 50 restaurantes más relevantes en función de la descripción del restaurante, la ubicación del restaurante y las preferencias del usuario, mediante la búsqueda vectorial de la descripción y la búsqueda geoespacial de la ubicación, el filtrado también por números de estrella, número de opiniones, categoría, etc.
DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);
SELECT TOP (50) b.id AS business_id,
b.name AS business_name,
r.id AS review_id,
r.stars,
r.review,
VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
@p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
INNER JOIN dbo.reviews_embeddings AS re
ON r.id = re.review_id
INNER JOIN dbo.business AS b
ON r.business_id = b.id
WHERE b.city = 'Redmond'
AND @p.STDistance(b.geo_location) < 5000 -- 5 km
AND r.stars >= 4
AND b.reviews >= 30
AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;
En el ejemplo anterior, la búsqueda Exact Nearest Neighbor (ENN) se usa para buscar las revisiones más relevantes en función de la distancia semántica de las incrustaciones, al tiempo que se filtra por distancia geoespacial y otros atributos empresariales. Esta consulta muestra la eficacia de combinar la búsqueda vectorial con las funcionalidades tradicionales de SQL para crear una experiencia de búsqueda enriquecida y eficaz.
Si desea usar la búsqueda de vecino más cercano (ANN), puede crear un índice vectorial en la reviews_embeddings tabla y usar la VECTOR_SEARCH función para realizar la búsqueda.
¿Dónde puedo encontrar un laboratorio autodirigido para obtener más información sobre las inserciones y la búsqueda de vectores?
Revise el laboratorio autodirigido de Azure SQL Cryptozoology AI Embeddings.
Contenido relacionado
- Tipo de datos vectorial
- Funciones de vector
- VECTOR_DISTANCE (Transact-SQL)
- VECTOR_SEARCH (Transact-SQL) (versión preliminar)
- CREATE VECTOR INDEX (Transact-SQL)
- Ejemplos de búsqueda de vectores de Azure SQL Database
- Aplicaciones inteligentes e inteligencia artificial
- Preguntas más frecuentes sobre aplicaciones inteligentes e inteligencia artificial (P+F)