
Explorando la búsqueda vectorial de Oracle AI: más allá de las bases de datos vectoriales
Esta entrada de blog explora la búsqueda vectorial de IA de Oracle, una nueva función que introduce las capacidades vectoriales en la base de datos Oracle. La incrustación de vectores es una herramienta poderosa para tareas como la búsqueda semántica y la generación aumentada por recuperación (RAG). Profundizaremos en las funcionalidades de creación, almacenamiento y búsqueda que ofrece Oracle AI Vector Search.
Proporciona una guía práctica para los desarrolladores que buscan aprovechar esta tecnología en sus aplicaciones.
¿Qué es una base de datos vectorial?
Las bases de datos vectoriales se están convirtiendo en la piedra angular de las aplicaciones modernas de generación aumentada (RAG) de búsqueda y recuperación. Entonces, ¿qué son exactamente y por qué son tan importantes?
Comprensión de las incrustaciones
Imagine capturar la esencia de un documento, una imagen o cualquier punto de datos y traducirlo en un código numérico. Esta es la magia de las incrustaciones. Además, estos códigos, representados como matrices de números, encarnan el significado semántico de los objetos de datos. Básicamente, se convierten en un nuevo lenguaje para que las computadoras comprendan las relaciones entre los diferentes tipos de información.
Espacio de alta dimensión
Piense en un espacio vasto y multidimensional. Cada incrustación ocupa una ubicación específica dentro de este espacio, con puntos de datos similares que residen más cerca unos de otros. Esto permite una comparación y una recuperación eficientes basadas en el significado semántico, no solo en las coincidencias exactas de palabras clave.
El poder de la base de datos vectorial
Aquí es donde entran en juego las bases de datos vectoriales. Son soluciones especializadas de almacenamiento de datos diseñadas específicamente para administrar estas representaciones vectoriales de alta dimensión. Su punto fuerte reside en su capacidad para realizar búsquedas aproximadas de vecinos más cercanos (ANN) con una velocidad excepcional.
Vecino más cercano aproximado
Imagina buscar un documento específico en una biblioteca enorme. Una base de datos tradicional podría comparar meticulosamente las palabras clave de cada documento. Por el contrario, los algoritmos de ANN de las bases de datos vectoriales funcionan de manera diferente. Aprovechan la organización espacial de las incrustaciones en el espacio de alta dimensión para identificar rápidamente las coincidencias más cercanas, lo que reduce significativamente el número de comparaciones necesarias. Esto se traduce en resultados de búsqueda ultrarrápidos y muy relevantes.
Por qué importan las bases de datos vectoriales
La capacidad de manejar de manera eficiente datos a gran escala y de alta dimensión es fundamental para varias aplicaciones. Además, las bases de datos vectoriales se destacan en:
- Búsqueda semántica: Búsqueda de información basada en el significado y el contexto, no solo en palabras clave.
- Generación aumentada de recuperación (RAG): Proporcionar a los LLM (modelos lingüísticos extensos) un contexto relevante a partir de los datos recuperados, lo que lleva a respuestas más precisas e informativas.
En pocas palabras, las bases de datos vectoriales nos permiten aprovechar el verdadero potencial de las incrustaciones, lo que allana el camino para una nueva era de búsquedas inteligentes y aplicaciones impulsadas por la inteligencia artificial.
El panorama de las bases de datos vectoriales
El mundo de la gestión de datos está evolucionando rápidamente y las bases de datos vectoriales se han convertido en un actor destacado. Sin embargo, con las diversas opciones disponibles, seleccionar la solución adecuada puede resultar abrumador. Esta sección explora las tres categorías principales de bases de datos vectoriales.
Bibliotecas vectoriales (FAISS, ANNOY):
Estas herramientas establecidas (que se remontan a mediados de la década de 2010) se destacan en la búsqueda eficiente de similitudes. Son las siguientes:
- Ventajas: Potente para la investigación y el desarrollo, altamente personalizable y fácil de integrar en los proyectos existentes.
- Contras: requieren que administre su propia infraestructura, ofrecen soporte limitado o nulo para filtrar por metadatos y carecen de la comodidad de las consultas SQL.
Bases de datos solo vectoriales (Milvus, Pinecone, Chroma, Qdrant, Weaviate):
Estas bases de datos especializadas han ganado terreno en los últimos años. Además, están diseñadas específicamente para datos vectoriales de alta dimensión, lo que las hace ideales para tareas como:
- Ventajas: Optimizado para la búsqueda de similitudes vectoriales, manejo eficiente de grandes conjuntos de datos y, en general, fácil de usar con funciones integradas.
- Desventajas: Soporte de SQL limitado o nulo, puede tener limitaciones en las funciones de nivel empresarial y la escalabilidad puede convertirse en un problema para conjuntos de datos extremadamente grandes.
Bases de datos empresariales con soporte vectorial (MongoDB, Neo4j, CouchDB, PostgreSQL (pgvector), Oracle, soluciones en la nube de AWS y Google, Databricks):
Los principales actores del mundo de las bases de datos están empezando a adoptar vectores. En consecuencia, estas soluciones ofrecen:
- Ventajas: elimina la necesidad de una base de datos independiente, permite un contexto más rico para RAG mediante la combinación de vectores con otros tipos de datos y, en general, proporciona funciones empresariales más sólidas.
- Contras: las funcionalidades de búsqueda vectorial pueden ser básicas o estar en fase de desarrollo, el rendimiento puede variar considerablemente y el manejo de conjuntos de datos masivos y de gran dimensión puede requerir optimizaciones adicionales, como la partición de datos o técnicas de indexación especializadas para mantener velocidades de consulta eficientes.
El panorama de las bases de datos vectoriales está en constante evolución. A medida que la tecnología madure, espere más avances y optimizaciones. Al comprender los puntos fuertes y las limitaciones de cada categoría, puede tomar una decisión informada y aprovechar el poder de las bases de datos vectoriales para abrir nuevas posibilidades en su estrategia de administración de datos.
Búsqueda vectorial de IA de Oracle
Visión general
En 2024, Oracle presentó la búsqueda vectorial de IA, lo que supuso un avance significativo en su tecnología de bases de datos. Esta oferta va más allá de la simple adición de capacidades vectoriales. Proporciona un conjunto de herramientas completo para trabajar con incrustaciones, interactuar con modelos lingüísticos de gran tamaño (LLM) e incluso implementar un proceso completo de generación aumentada de recuperación (RAG). Como resultado, Oracle AI Vector Search se posiciona como una solución poderosa para los desarrolladores que trabajan con aplicaciones de inteligencia artificial.
Uno de los puntos fuertes de AI Vector Search es su capacidad para realizar todas las tareas necesarias dentro de la propia base de datos. Esto incluye la creación de incrustaciones, la fragmentación de documentos y el uso de los LLM para el procesamiento de textos. Este enfoque centralizado agiliza los flujos de trabajo de desarrollo. Sin embargo, también mantiene la flexibilidad al permitir a los usuarios realizar tareas específicas de forma externa si así lo desean, utilizando Oracle únicamente para el almacenamiento vectorial.
Esta funcionalidad se logra mediante la adición de un nuevo tipo de datos vectoriales, índices vectoriales y un conjunto de funciones SQL y paquetes PL/SQL. En particular, los usuarios pueden importar modelos incrustados directamente a la base de datos utilizando el formato ONNX, lo que proporciona flexibilidad a la hora de elegir el modelo más adecuado para su proyecto. Además, la integración con los servicios de terceros es perfecta, ya que las credenciales se administran de forma segura dentro de la base de datos.
El verdadero poder de AI Vector Search reside en su capacidad de combinar los puntos fuertes de una base de datos empresarial con capacidades avanzadas de búsqueda vectorial. Además, los usuarios pueden recuperar y buscar datos combinando sin problemas vectores semánticos con el filtrado tradicional de datos empresariales.
Las aplicaciones potenciales de AI Vector Search son amplias. Los desarrolladores pueden aprovecharla para ampliar sus conocimientos sobre las LLM con RAG, crear sistemas de recomendación sólidos o realizar búsquedas semánticas y textuales de forma eficiente.
Para aquellos interesados en explorar la búsqueda vectorial de IA, Oracle Cloud ofrece una opción rentable. La capa gratuita proporciona acceso a bases de datos autónomas siempre gratuitas, lo que permite a los desarrolladores experimentar con las funciones y evaluar su idoneidad para sus proyectos.
Generar incrustaciones
Oracle Database proporciona un enfoque versátil para generar incrustaciones, ya que ofrece opciones externas y dentro de la base de datos.
Dentro de la base de datos:
Modelos de incrustación ONNX: aproveche los modelos previamente entrenados en el formato ONNX. El DBMS_VECTOR.LOAD_ONNX_MODEL procedimiento dentro del DBMS_VECTOR El paquete PL/SQL facilita la importación de estos modelos. Simplemente proporcione el archivo ONNX y el nombre del modelo elegido. Tenga en cuenta que el tamaño del modelo está limitado a 1 gigabyte.
Este es un ejemplo de consulta SQL que demuestra cómo generar una incrustación con un modelo ONNX cargado denominado doc_model:
SELECCIONE TO_VECTOR (VECTOR_EMBEDDING (doc_model USANDO 'hello' COMO dato)) COMO incrustación;
Proveedores de incrustación externos:
Oracle es compatible con varios proveedores de integración de terceros, como Cohere, Generative AI, Google AI, Hugging Face, OpenAI y Vertex AI. Para aprovecharlos:
- Crear credenciales: utilice el
DBMS_VECTOR.CREATE_CREDENTIALprocedimiento. Asigne un nombre a la credencial y proporcione el token de acceso. - Utilizar
DBMS_VECTOR.UTL_TO_EMBEDDING: Esta función le permite interactuar con proveedores externos. He aquí un ejemplo:
SELECCIONE DBMS_VECTOR.UTL_TO_EMBEDDING ('hello', json (:params)) DE dual;
La variable params contiene detalles como el proveedor, el nombre de la credencial, la URL, el modelo y otros parámetros específicos del proveedor.
Fuera de la base de datos:
En esta sección se muestra cómo crear una incrustación fuera de la base de datos mediante Cohere, convertir la incrustación en un formato adecuado y, a continuación, insertarla en una tabla de base de datos de Oracle. El código lleva a cabo los siguientes pasos:
- Importar e inicializar: Importe la clase CohereEmbeddings del
langchain_coherebiblioteca e inicialícela con su clave y modelo de API de Cohere. - Generar incrustación: defina un documento de texto y genere su incrustación mediante el método embed_documents.
- Convertir en matriz: convierte la incrustación resultante en una matriz de punto flotante de 32 bits.
- Conectarse a la base de datos Oracle: establezca una conexión a la base de datos Oracle mediante el
Oracle DBbiblioteca. - Insertar incrustación: inserte la incrustación en una tabla denominada
tabla_vectorial. - Cerrar conexiones: cierra el cursor y la conexión a la base de datos.
<user><password><dsn>desde langchain_cohere import CohereEmbeddings cohere_embeddings = Cohere_api_key="< <apiKey>>», model="embed-english-light-v3.0") text = «Este es un documento de prueba». doc_result = cohere_embeddings.embed_documents ([text]) import array vector_data_32 = array.array («f», doc_result [0]) import oracledb conn = oracledb.connect (user="< >», password="< >», dsn="< >») cursor = conn.cursor () cursor.execute («insertar en vector_table (v32) valores (:1)», [vector_data_32],) cursor.close () conn.close ()
Esta flexibilidad permite a los desarrolladores elegir el enfoque de generación integrada que mejor se adapte a sus necesidades específicas y a los requisitos del proyecto.
Incrustaciones de tiendas
Oracle AI Vector Search presenta la VECTOR tipo de datos, diseñado específicamente para almacenar representaciones vectoriales de datos de manera eficiente. En la siguiente sección, analizaremos cómo aprovechar este tipo de datos para integrar el almacenamiento y la administración.
Creación de tablas para incrustaciones:
El proceso es sencillo. Puede definir una tabla con un VECTOR columna para almacenar las incrustaciones, como se muestra a continuación:
CREAR TABLA my_vectors (id NUMBER, incrustando VECTOR (768, INT8));
En este caso, la columna de incrustación se define como VECTOR tipo de datos con 768 dimensiones y el INT8 formato. Especificar el número de dimensiones y el formato es opcional, con opciones que incluyen INT8, FLOAT 32, y FLOAT64. Si bien los vectores en sí mismos pueden ser nulos, sus dimensiones no.
Funciones de conversión:
Oracle proporciona funciones para convertir sin problemas entre VARCHAR 2/TERRÓN tipos de datos y VECTOR. Esto simplifica el proceso de integración de las fuentes de datos existentes con sus representaciones vectoriales.
Carga a gran escala:
Para cargar de manera eficiente un gran número de vectores, interviene SQLLoader de Oracle. Admite la carga de vectores desde archivos de texto y en formato binario a través de .fvec archivos. Esto agiliza el proceso de importación de grandes cantidades de datos incrustados en su base de datos.
Índices vectoriales
La eficacia de las búsquedas vectoriales depende del poder de los índices. La búsqueda vectorial con IA de Oracle le permite crear índices vectoriales, lo que permite implementar la búsqueda aproximada de vecinos más cercanos (ANN). Esto reduce significativamente los tiempos de recuperación en comparación con las búsquedas lineales. Es importante recordar que estos índices proporcionan resultados aproximados.
Tipos de índices vectoriales:
La mayoría de los índices vectoriales se dividen en dos categorías computacionales: agrupamiento y gráficos. Oracle admite:
- Índices de archivos invertidos (IVF) (particionamiento de vecinos): estos dividen los puntos de datos en clústeres, lo que permite una búsqueda eficiente dentro de los clústeres relevantes.
- Índices jerárquicos navegables de un mundo pequeño (HNSW) (gráfico vecino en memoria): crean una estructura gráfica navegable para localizar vectores similares. Sin embargo, los índices HNSW no están disponibles en los entornos RAC.
Elección de la métrica de distancia correcta:
La métrica de distancia que elija debe alinearse con las recomendaciones de su modelo de incrustación. Básicamente, calcula la similitud entre los vectores. Entre las opciones más comunes se incluyen EUCLIDIANO, L2_CUADRADO, COSENO, PUNTO, MANHATTAN, y MARTILLEANDO. Puede especificar la métrica durante la creación del índice o dentro de la propia consulta de búsqueda.
Ajuste preciso de los parámetros del índice:
Para los índices de FIV, puede definir el número de conglomerados y el número de centroides (puntos representativos) que se van a explorar durante una búsqueda. Además, los índices permiten especificar un porcentaje de precisión objetivo para influir en la búsqueda. Un valor del 100% apunta a una búsqueda exacta, pero esto no está garantizado. Esta precisión objetivo se puede establecer durante la creación del índice, en la consulta o incluso se puede anular en la propia consulta.
Este es un ejemplo de cómo crear un índice de FIV:
CREE UN ÍNDICE VECTORIAL galaxies_ivf_idx EN LAS GALAXIAS (incrustación) ORGANIZACIÓN DE LAS PARTICIONES VECINAS DISTANCIA DEL COSENO CON UNA PRECISIÓN OBJETIVO DE 95;
Mantener la precisión del índice:
Es importante tener en cuenta que las operaciones DML (insertar, actualizar, eliminar) no están permitidas después de crear un índice HNSW. En el caso de los índices de FIV, las operaciones de DML pueden reducir la precisión con el tiempo. Es posible que sea necesario reconstruir el índice periódicamente.
Supervisión y optimización:
Una característica valiosa es la provisión de funciones de Oracle para informar sobre la precisión de los índices en función de los vectores de consulta utilizados en las búsquedas aproximadas. Esto le permite supervisar y optimizar de forma continua la precisión de la implementación de la búsqueda vectorial.
Distancia vectorial
El cálculo de distancias vectoriales es una función básica en cualquier aplicación de búsqueda vectorial. Oracle AI Vector Search proporciona un conjunto completo de herramientas para facilitar este proceso.
Funciones y operadores de distancia:
- DISTANCIA_VECTORIAL: Esta es la función principal para calcular distancias entre vectores. Permite especificar la métrica de distancia deseada para el cálculo.
- Funciones abreviadas: Oracle ofrece funciones abreviadas prácticas para métricas de distancia comunes, como
L1_DISTANCIA,L2_DISTANCIA,COSENO (DISTANCIA), yPRODUCTO_INTERNO. Estas funciones simplifican el código y mejoran la legibilidad. - Operadores de distancia: Como alternativa a las funciones, Oracle admite operadores que reflejan la funcionalidad de las funciones de distancia. Esto proporciona un enfoque más conciso para los cálculos de distancia en las consultas SQL.
Búsqueda de similitud exacta:
En el ejemplo siguiente se muestra cómo realizar una búsqueda de similitud exacta mediante el DISTANCIA_VECTORIAL función:
SELECCIONE DOCID DE VECTOR_TAB ORDER BY VECTOR_DISTANCE (embedding, :query_vector, EUCLIDEAN_SQUARED) OBTENGA SOLO LAS 10 PRIMERAS FILAS;
En este ejemplo, la consulta recupera los identificadores de los documentos del tabulación_vectorial tabla, ordenada por su distancia al query_vector proporcionado. El EUCLIDEAN_SQUARE para el cálculo se utiliza la métrica de distancia.
Además, el OBTENER SOLO LAS 10 PRIMERAS FILAS La cláusula limita los resultados a los 10 partidos más reñidos.
Búsqueda de similitud aproximada:
En los casos en los que los resultados exactos no son esenciales, puede aprovechar la búsqueda aproximada para obtener tiempos de recuperación más rápidos. He aquí un ejemplo:
SELECCIONA UN NOMBRE DE ENTRE LAS GALAXIAS EN LAS QUE NOMBRE <> 'NGC1073' ORDER BY VECTOR_DISTANCE (embedding, TO_VECTOR ('[0,1,1,0,0]'), COSENO) OBTENGA SOLO LAS 3 PRIMERAS FILAS APROXIMADAS;
Esta consulta busca en la tabla de galaxias las galaxias más cercanas a una representación vectorial específica ([0,1,1,0,0]), excluyendo la galaxia denominada 'NGC 1073 '. La métrica de distancia COSINE se utiliza para la búsqueda, y OBTENER SOLO LAS 3 PRIMERAS FILAS APROXIMADAS La cláusula recupera las 3 mejores coincidencias aproximadas.
Métricas de distancia coincidentes:
Es crucial asegurarse de que la métrica de distancia utilizada en las consultas se alinee con la métrica utilizada durante el entrenamiento de su modelo de incrustación vectorial. Esto garantiza que las distancias calculadas reflejen con precisión la similitud entre los vectores.
TRAPO
Los grandes modelos lingüísticos (LLM) han cambiado las reglas del juego en el procesamiento del lenguaje natural, pero su tendencia a generar información inexacta o inventada (alucinaciones) sigue siendo motivo de preocupación. La generación aumentada por recuperación (RAG) ofrece una solución poderosa al proporcionar a los LLM un contexto relevante derivado de las fuentes de datos, lo que mejora la precisión y la base fáctica de sus resultados.
Oracle AI Vector Search destaca en esta área al ofrecer una solución integral en la base de datos para implementar RAG. Esto elimina la necesidad de herramientas o marcos externos, lo que agiliza el desarrollo y mantiene la seguridad de los datos confidenciales en el entorno confiable de la base de datos Oracle.
Implementación de RAG con Oracle AI Vector Search
Este es un desglose del proceso de implementación:
- Carga y preprocesamiento de datos:
- Establezca una tabla de base de datos para almacenar documentos como
MANCHAColumnas (Objeto grande binario). - Cree una tabla independiente para alojar las incrustaciones vectoriales, que represente fragmentos más pequeños y manejables de los documentos originales.
- Aproveche las funciones de utilidad dentro del
DBMS_VECTOR_CHAINPaquete PL/SQL para automatizar la preparación de datos:DBMS_VECTOR_CHAIN.UTL_TO_TEXTO: Convierte fácilmente documentos (PDF, Word, etc.) en texto plano.DBMS_VECTOR_CHAIN.UTL_TO_CHUNKS: divide los documentos en secciones más pequeñas y manejables.DBMS_VECTOR_CHAIN.UTL_TO_EMBEDDINGS: Genera incrustaciones vectoriales para cada fragmento de documento.
- Establezca una tabla de base de datos para almacenar documentos como
- Procesamiento y recuperación de consultas:
- Utilice el
INCRUSTACIÓN VECTORIALFunción SQL para convertir la consulta del usuario en una representación vectorial, lo que permite una comparación eficiente con las incrustaciones de fragmentos de documentos. - Emplee la poderosa combinación de
DISTANCIA_VECTORIALLa función SQL y laCUESTA APROXIMADAMENTEcláusula para realizar una búsqueda de similitud. Esto identifica los documentos más relevantes para la consulta del usuario.
- Utilice el
- Integración LLM (opcional):
Para una flexibilidad aún mayor, Oracle ofreceUTL_PARA_GENERAR_TEXTOfunciona dentro delDBMS_VECTOR_CHAINpaquete. Esta función le permite invocar un LLM de terceros para generar texto en función de los documentos recuperados y la consulta del usuario. Al proporcionar a los LLM el contexto relevante de sus fuentes de datos confiables, RAG garantiza respuestas objetivas y minimiza el riesgo de alucinaciones.
Finalizando
La búsqueda vectorial de IA de Oracle tiene un gran impacto con sus funcionalidades en la base de datos. En concreto, agiliza el desarrollo gestionando la carga de datos, el preprocesamiento, la búsqueda e incluso la integración de la LLM, todo ello dentro del entorno familiar de Oracle. En consecuencia, esto no solo simplifica las cosas, sino que también mantiene seguros los datos confidenciales.
Además, las capacidades RAG integradas suponen un verdadero punto de inflexión. Al proporcionar a los LLM el contexto relevante de sus datos, RAG garantiza respuestas objetivas y minimiza el riesgo de «alucinaciones» a las que son propensos estos modelos. Como resultado, Oracle AI Vector Search es la solución perfecta para las empresas que ya han invertido en las bases de datos de Oracle, especialmente para aquellas que buscan aprovechar la IA para tareas como los chatbots, las recomendaciones personalizadas o el filtrado de contenido.
Aunque no es un servicio gratuito, el potencial retorno de la inversión de Oracle AI Vector Search es innegable. Su disponibilidad en Oracle Cloud Infrastructure (OCI) ofrece una opción potencialmente rentable.
Sin embargo, la única pieza que falta en el rompecabezas en este momento son los datos comparativos. Si bien las funciones son impresionantes, las métricas de rendimiento reales consolidarían la posición líder de Oracle AI Vector Search. Por lo tanto, esperamos con impaciencia estos puntos de referencia para tener una visión completa.
En conclusión, Oracle AI Vector Search surge como una solución segura, flexible y muy prometedora para crear aplicaciones de IA confiables e informativas. En última instancia, su estrecha integración con la base de datos de Oracle y su enfoque en la funcionalidad RAG la convierten en una opción atractiva para las empresas que están dando el salto al mundo de la IA.
Referencias y enlaces a recursos
La guía definitiva sobre el panorama de las bases de datos vectoriales: 2024 y...
Navegando por el panorama de las bases de datos vectoriales - LinkedIn
Oracle anuncia la disponibilidad general de la búsqueda vectorial con IA en Oracle Database 23ai
Guía del usuario de Oracle Database Oracle AI Vector Search, 23ai
LangChain_Cohere.Embeddings.CohereEmbedings — 🦜🔗 LangChain 0.2.3
14. Uso de datos vectoriales — documentación de python-oracledb 2.3.0b1
Otros blogs
