Un vector es una representación numérica de texto, imágenes, audio o video que codifica las características / significado semántico de los datos, en lugar de los contenidos reales, como las palabras subyacentes o píxeles. Un vector es una lista de valores numéricos, conocidos como dimensiones, con un formato especificado.
Oracle AI Vector Search admite vectores hasta de 65 535 dimensiones.
AI Vector Search admite los formatos INT8, FLOAT32 y FLOAT64.
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 KB. Un vector con 1024 dimensiones y el formato FLOAT32 (4 bytes) tiene un tamaño de 4 KB.
Los vectores se crean a partir de diferentes tipos de datos de entrada (texto, imágenes, audio, video, etc.) mediante modelos de aprendizaje profundo conocidos como modelos de inserción. Puedes crear vectores fuera de la base de datos mediante tus propios modelos de incrustado o servicio de incrustado, o bien puedes crearlos en la base de datos mediante modelos de incrustado importados mediante la función SQL VECTOR_EMBEDDING().
AI Vector Search debería funcionar con cualquier modelo de incrustación válido que genere vectores con uno de los formatos soportados 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 ejecutarse 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.
Existen múltiples operaciones matemáticas admitidas en los vectores, pero la operación más importante es la función SQL VECTOR_DISTANCE(), que encuentra la distancia matemática entre dos vectores basándose en la fórmula de distancia seleccionada. Hay muchas fórmulas de distancia compatibles con Oracle AI Vector Search, que incluyen distancia euclidiana, similitud de coseno y distancia de Hamming. La elección de la función de distancia normalmente se basa en el modelo de incrustación utilizado para generar los vectores.
Todos los tipos de 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 simplemente 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 cuyas fotos coinciden más estrechamente con la foto 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, agrupar por, etc. Por ejemplo, la siguiente consulta se puede utilizar para encontrar los 10 principales productos coincidentes por foto para productos fabricados en el estado de California.
SELECCIONE Product.name, Product.photo, Manufacturer.name
FROM Product p JOIN Manufacturer m ON (p.mfr_id = m.id)
WHERE Manufacturer.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 basadas en valores y las exploraciones de rango basadas en valores. Los índices vectoriales, por otro lado, están diseñados para encontrar las coincidencias más similares de K superiores basadas en la similitud semántica en lugar de exactamente los valores coincidentes. Por ejemplo, un índice vectorial se puede utilizar para encontrar las palabras K superiores que son más similares en el 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 vector dentro de una columna.
Además de SQL y PL/SQL, las aplicaciones AI Vector Search se pueden crear en una variedad de 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 se puede utilizar en el conocido flujo de trabajo de generación aumentada de recuperación (RAG) para ayudar a mejorar la precisión y la relevancia contextual de las conversaciones en lenguaje natural con el modelo de lenguaje grande (LLM) GenAI. 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 LLM de código abierto como Llama2 o Llama3, así como LLM de proveedores como OpenAI y Cohere.
AI Vector Search está integrado con LangChain, que es un marco de código abierto muy popular para crear soluciones basadas en RAG.
Todos los amplios mecanismos de escalabilidad de Oracle, como la ejecución en paralelo, la partición, RAC, la partición y Exadata, se pueden utilizar para escalar verticalmente AI Vector Search a prácticamente cualquier tamaño de datos y número de usuarios.