Un vector es una representación matemática de texto, imágenes, audio o video que codifica las características o el significado semántico de los datos, en lugar de los contenidos reales, como las palabras subyacentes o píxeles. Un vector está formado por una lista de valores numéricos, conocidos como dimensiones, y se pueden utilizar para operaciones de inteligencia artificial (IA).
Los vectores se crean a partir de diferentes tipos de datos de entrada (texto, imágenes, audio, video y otros datos) mediante modelos de aprendizaje profundo conocidos como modelos de incrustación. Puedes crear vectores fuera de la base de datos mediante tus propios modelos o servicio de incrustación, o bien puedes crearlos en la base de datos mediante modelos de incrustación importados mediante la función SQL VECTOR_EMBEDDING().
Oracle AI Vector Search admite los formatos BINAR INT8, FLOAT32 y FLOAT64.
Oracle AI Vector Search admite vectores hasta de 65 535 dimensiones.
El tamaño de un vector es el producto del número de dimensiones y el tamaño de cada dimensión.
Por ejemplo, un vector con 2048 dimensiones y el formato INT8 (1 byte) tiene un tamaño de 2 kilobytes, y un vector con 1024 dimensiones y el formato FLOAT32 (4 bytes) tiene un tamaño de 4 kilobytes.
Oracle AI Vector Search admite vectores dispersos, que suelen presentar múltiples dimensiones, pero solo unas pocas tienen valores distintos de cero. Para un documento determinado, los valores de dimensión distintos de cero del vector corresponden a las palabras clave (y sus variaciones) que aparecen en dicho documento.
AI Vector Search debería funcionar con cualquier modelo de incrustación válido que genere vectores con uno de los formatos de dimensión admitidos y 65 535 o menos dimensiones.
La elección del modelo de integración depende de muchos factores, como la naturaleza de tus datos, las métricas de rendimiento que priorizas y el costo que estás dispuesto a pagar. Los modelos de incrustación de código abierto gratuitos, como varios transformadores de oraciones, se pueden encontrar en Hugging Face y sitios similares. Estos modelos se pueden convertir a ONNX para generar incrustaciones en la base de datos con AI Vector Search. Además, una fuente popular para los mejores modelos de inserción de texto es la Tabla de clasificación MTEB que aloja Hugging Face. También puedes acudir a proveedores de modelos establecidos, como OpenAI y Cohere.
AI Vector Search admite vectores generados a partir de todos los modelos de incrustación, independientemente de si los modelos son para texto, imágenes, audio, video u otros datos. Oracle AI Database también incluye modelos de incrustación precompilados en ONNX para realizar operaciones de distancia basadas en imágenes con AI Vector Search.
Los vectores admiten múltiples operaciones matemáticas. La operación más crítica es la función SQL VECTOR_DISTANCE(), que encuentra la distancia matemática entre dos vectores en función de la fórmula de distancia seleccionada. Hay muchas fórmulas de distancia soportadas por Oracle AI Vector Search, entre las que se incluyen euclidiana, euclidiana al cuadrado, similitud de coseno, producto punto, Manhattan, Jaccard y Hamming. La elección de la función de distancia suele estar controlada por el modelo de incrustación utilizado para generar los vectores. Sin embargo, la métrica de distancia por defecto en Oracle AI Database 26ai es la similitud coseno.
Todos los vectores comparten la misma propiedad: cuanto más similares sean las dos entidades, menor será la distancia matemática entre ellas. Por ejemplo, los vectores de "manzana" y "naranja" están más cerca que los vectores de "manzana" y "perro". Esta propiedad de los vectores les permite ser utilizados para buscar datos por similitud semántica.
Hay extensiones SQL sencillas e intuitivas que permiten que AI Vector Search se incorpore fácilmente dentro de sus aplicaciones. Dado que la distancia vectorial es una medida de similitud, la búsqueda vectorial de IA implica ordenar el conjunto de vectores candidatos en función de su distancia de un vector de búsqueda y devolver los primeros K coincidencias más cercanas. Por ejemplo, la siguiente consulta encuentra los 10 productos principales con fotografías más similares a la imagen de búsqueda del usuario:
SELECT product_name, product_photo
FROM Product
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
AI Vector Search se puede utilizar en consultas sofisticadas que implican filtros, uniones, agregaciones, agrupaciones y otros elementos. Por ejemplo, la siguiente consulta se puede utilizar para encontrar los 10 principales productos coincidentes fabricados en California según una foto cargada por un usuario.
SELECT p.name, p.photo, m.name
FROM product p
JOIN manufacturer m ON (p.mfr_id = m.id)
WHERE m.state = 'CA'
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
Los índices de base de datos tradicionales se utilizan para acelerar las búsquedas basadas en valores coincidentes. Por ejemplo, un índice de árbol B acelera las consultas y las exploraciones de rango basadas en valores. Los índices vectoriales, por otro lado, están diseñados para encontrar las mejores coincidencias más similares de K basadas en la similitud semántica en lugar de coincidir exactamente con los valores. Por ejemplo, un índice vectorial se puede utilizar para encontrar las palabras K que más se asemejan al significado de "manzana" en un corpus de palabras existentes. El uso de un índice vectorial da como resultado una búsqueda aproximada que intercambia cierta precisión de búsqueda para un rendimiento hasta 100X mayor, ya que evita examinar cada entrada de vector de una columna.
Los índices vectoriales de gráficos adyacentes en memoria son índices alojados en memoria basados en gráficos. Los vértices de la gráfica representan vectores, y los bordes entre los vértices representan la similitud entre los vectores. Oracle AI Vector Search soporta índices vectoriales de gráficos vecinos en memoria del tipo Hierarchical Navigable Small World (HNSW). Los índices HNSW se estructuran utilizando principios de redes mundiales pequeñas y organización jerárquica en capas, lo que los hace extremadamente rápidos y precisos para la búsqueda de similitudes.
Oracle AI Vector Search admite índices de vectores particionados adyacentes del tipo Inverted File Flat (IVF). Los índices de vectores particionados adyacentes son índices de vectores basados en disco en los que los vectores se agrupan en particiones de tabla en función de la similitud. Son un índice de escalabilidad horizontal eficiente con un soporte transaccional rápido y fluido, lo que te permite equilibrar la búsqueda de alta calidad con una velocidad razonable. Están diseñados para adaptarse a tamaños de datos ilimitados, debido al hecho de que no dependen de la memoria.
Los índices vectoriales híbridos son un nuevo tipo de índice vectorial que permite a los usuarios indexar y consultar fácilmente sus documentos utilizando una combinación de búsqueda de texto completo y búsqueda semántica de vectores para lograr resultados de búsqueda de mayor calidad. Soportan una API de consulta unificada que permite a los usuarios ejecutar consultas textuales, de similitud vectorial o híbridas que aprovechan ambos enfoques.
Además de SQL y PL/SQL, las aplicaciones AI Vector Search se pueden crear en diversos lenguajes de programación. AI Vector Search incluye soporte de controlador nativo para vectores en lenguajes populares como Java, Python, JavaScript y C#.
AI Vector Search suele formar parte de un flujo de trabajo de generación aumentada de recuperación (RAG). Proporciona las entradas adicionales necesarias para ajustar la respuesta de un modelo de lenguaje grande (LLM) GenAI.
En combinación con la RAG, la pregunta de un usuario se convierte primero en un vector y luego se asigna a los documentos más relevantes dentro de la base de datos a través de AI Vector Search. A continuación, la pregunta del usuario y los documentos pertinentes de apoyo se transmiten al LLM para que pueda generar una respuesta informada basada tanto en su propio conocimiento general como en el conocimiento especializado del almacén de vectores.
AI Vector Search se puede utilizar para RAG con cualquier LLM, incluidos los modelos de código abierto, como Llama3 y Mistral, así como los modelos propietarios de proveedores como OpenAI y Cohere. Además, las API PL/SQL especializadas están disponibles para garantizar una integración perfecta entre AI Vector Search y los LLM para RAG.
AI Vector Search está integrado con LangChain y LlamaIndex. Estos marcos pueden ayudar a integrar datos privados y públicos para aplicaciones de modelos de lenguaje de gran tamaño.
La generación aumentada de recuperación (RAG) desempeña un papel fundamental en la IA generativa (GenAI), ofreciendo importantes ventajas a las aplicaciones GenAI. Las siguientes son solo tres razones convincentes por las que resulta primordial integrar RAG en la configuración de GenAI:
Los amplios mecanismos de escalabilidad de Oracle, como la ejecución en paralelo, las particiones, Real Application Clusters (Oracle RAC), Sharding y Exadata, pueden escalar verticalmente AI Vector Search a prácticamente cualquier tamaño de datos y número de usuarios.
Los amplios mecanismos de escalabilidad de Oracle, como la ejecución en paralelo, las particiones, Oracle Real Application Clusters (Oracle RAC), Sharding y Exadata, pueden escalar verticalmente AI Vector Search a prácticamente cualquier tamaño de datos y número de usuarios. Oracle Exadata también incluye AI Smart Scan, que descarga las operaciones de consulta de AI Vector Search en Exadata Storage Servers para un rendimiento de consulta sin precedentes.
Oracle AI Vector Search se integra perfectamente con las funciones de seguridad líderes en la industria de Oracle para reducir el riesgo y simplificar el cumplimiento normativo. Aprovechando herramientas robustas, como cifrado, enmascaramiento de datos, controles de acceso para usuarios privilegiados, monitoreo de actividad y auditoría, las organizaciones pueden proteger sus datos mientras aprovechan al máximo las capacidades avanzadas de búsqueda con IA. Las funciones en la base de datos, como Database Vault y Virtual Private Database, ayudan a proteger los datos vectoriales y a garantizar que solo los usuarios con los privilegios adecuados puedan acceder a ellos.
Esto significa que Oracle AI Vector Search puede reducir significativamente la huella de la infraestructura vectorial de una empresa. Una única instancia de Oracle AI Database puede abordar las necesidades de varios usuarios diferentes con diferentes permisos de acceso y autorización sin necesidad de duplicar datos ni incurrir en gestiones excesivas, como suele ocurrir con otras bases de datos vectoriales.
Los vectores en Oracle AI Database son tipos de datos de primera clase dentro de la base de datos. Esto significa que los vectores heredan implícitamente todas las funciones y capacidades innovadoras que convierten a Oracle en la base de datos empresarial líder en el mundo. La alta disponibilidad (HA) se proporciona al ejecutar búsquedas de similitud en Oracle RAC u Oracle Globally Distributed Database (fragmentación). Data Guard, Active Data Guard y Oracle GoldenGate pueden proporcionar automáticamente recuperación ante desastres.