¿Cómo las bases de datos vectoriales dan forma al futuro de las soluciones de IA generativa?

El impacto de las bases de datos vectoriales en el futuro de las soluciones de IA generativa

Introducción

En el paisaje en constante evolución de la IA generativa, el papel fundamental de las bases de datos de vectores se ha vuelto cada vez más evidente. Este artículo ahonda en la sinergia dinámica entre las bases de datos de vectores y las soluciones de IA generativa, explorando cómo estos cimientos tecnológicos están dando forma al futuro de la creatividad de la inteligencia artificial. Únete a nosotros en un viaje a través de las complejidades de esta poderosa alianza, desbloqueando ideas sobre el impacto transformador que las bases de datos de vectores traen al frente de las soluciones innovadoras de IA.

Objetivos de aprendizaje

Este artículo te ayuda a comprender los aspectos de la base de datos de vectores a continuación.

  • La importancia de las bases de datos de vectores y sus componentes clave
  • Estudio detallado de la comparación de bases de datos de vectores con bases de datos tradicionales
  • Exploración de las incrustaciones de vectores desde un punto de vista de aplicación
  • Construcción de una base de datos de vectores utilizando Pincone
  • Implementación de una base de datos de vectores de Pincone utilizando el modelo LLM de langchain

Este artículo se publicó como parte del Data Science Blogathon.

¿Qué es una base de datos de vectores?

Una base de datos de vectores es una forma de colección de datos almacenada en el espacio. Sin embargo, aquí se almacena en representaciones matemáticas, ya que el formato almacenado en las bases de datos facilita que los modelos de IA abiertos memoricen las entradas y permite que nuestra aplicación de IA abierta utilice la búsqueda cognitiva, las recomendaciones y la generación de texto para diversos casos de uso en las industrias transformadas digitalmente. El almacenamiento y la recuperación de datos se llama “Incrustaciones de vectores” o “Incrustaciones”. Además, se representa en un formato de matriz numérica. La búsqueda es mucho más fácil que las bases de datos tradicionales utilizadas para perspectivas de IA con capacidades de indexación masiva.

Características de las bases de datos de vectores

  • Aprovecha el poder de estas incrustaciones de vectores, lo que conduce a la indexación y búsqueda en un conjunto de datos masivo.
  • Compatible con todos los formatos de datos (imágenes, texto o datos).
  • Dado que se adapta a las técnicas de incrustación y cuenta con características altamente indexadas, puede ofrecer una solución completa para administrar datos y entradas para el problema dado.
  • Una base de datos de vectores organiza los datos a través de vectores de alta dimensión que contienen cientos de dimensiones. Podemos configurarlos muy rápidamente.
  • Cada dimensión corresponde a una característica específica o propiedad del objeto de datos que representa.

Base de datos tradicional vs. Base de datos de vectores

  • La imagen muestra el flujo de trabajo de alto nivel de las bases de datos tradicionales y de vectores
  • Las interacciones formales con la base de datos ocurren a través de declaraciones SQL y los datos se almacenan en formato de filas y tablas.
  • En la base de datos de vectores, las interacciones ocurren a través de texto plano (por ejemplo, inglés) y los datos se almacenan en representaciones matemáticas.

Semejanzas entre las bases de datos tradicionales y de vectores

Debemos considerar cómo las bases de datos de vectores difieren de las tradicionales. Discutamos esto aquí. Una diferencia rápida que puedo dar es que en las bases de datos convencionales, los datos se almacenan tal como son; podríamos agregar cierta lógica de negocio para ajustar los datos y combinarlos o dividirlos según los requisitos o demandas del negocio. Sin embargo, la base de datos de vectores tiene una transformación masiva y los datos se convierten en una representación vectorial compleja.

Aquí tienes un mapa para entenderlo y tener claridad con las bases de datos relacionales en comparación con las bases de datos de vectores. La siguiente imagen es autoexplicativa para entender las bases de datos de vectores con las bases de datos tradicionales. En resumen, podemos ejecutar inserciones y eliminaciones en las bases de datos de vectores, pero no declaraciones de actualización.

Una analogía sencilla para entender las bases de datos de vectores

Los datos se organizan automáticamente espacialmente según la similitud de contenido en la información almacenada. Así que, consideremos la tienda departamental como analogía de una base de datos vectorial; todos los productos se organizan en el estante según su naturaleza, propósito, fabricación, uso y cantidad. De manera similar, los datos se organizan automáticamente en la base de datos vectorial por un tipo similar, incluso si el género no estaba bien definido al almacenar o acceder a los datos.

Las bases de datos vectoriales permiten una granularidad y dimensiones prominentes en las similitudes específicas, por lo que el cliente busca el producto deseado, el fabricante y la cantidad, y guarda el artículo en el carrito. La base de datos vectorial almacena todos los datos en una estructura de almacenamiento perfecta; aquí, los ingenieros de Aprendizaje Automático e Inteligencia Artificial no necesitan etiquetar o etiquetar el contenido almacenado manualmente.

Teorías esenciales detrás de las bases de datos vectoriales

  • Embebidos de Vector y su Alcance
  • Requisitos de Indización
  • Entendiendo la Búsqueda Semántica y de Similitud

Embebido del Vector y su Alcance

Un embebido del vector es una representación vectorial en términos de valores numéricos. En un formato comprimido, los embebidos capturan las propiedades y asociaciones inherentes de los datos originales, haciéndolos fundamentales en casos de uso de Inteligencia Artificial y Aprendizaje Automático. Diseñar embebidos para codificar información pertinente sobre los datos originales en un espacio de dimensiones inferiores garantiza una velocidad de recuperación alta, eficiencia computacional y almacenamiento eficiente.

Capturar la esencia de los datos de manera más estructurada es el proceso de embebido del vector, formando un ‘Modelo de Embebido’. En última instancia, estos modelos consideran todos los objetos de datos, extraen patrones y relaciones significativas dentro de la fuente de datos y los transforman en embebidos de vector. Posteriormente, los algoritmos aprovechan estos embebidos de vector para ejecutar diversas tareas. Numerosos modelos de embebido altamente desarrollados, disponibles en línea de forma gratuita o de pago, facilitan el logro de la embebido del vector.

Alcance de los Embebidos de Vector desde un punto de vista de Aplicación

Estos embebidos son compactos, contienen información compleja, heredan relaciones entre los datos almacenados en una base de datos vectorial, permiten un análisis eficiente de procesamiento de datos para facilitar la comprensión y toma de decisiones, y construyen dinámicamente diversos productos de datos innovadores en cualquier organización.

Las técnicas de embebido de vector son esenciales para conectar la brecha entre los datos legibles y los algoritmos complejos. Con los tipos de datos siendo vectores numéricos, hemos podido desbloquear el potencial para una gran variedad de aplicaciones de IA Generativa junto con modelos de IA Abierta disponibles.

Múltiples trabajos con Embebido de Vector

Este embebido de vector nos ayuda a hacer múltiples trabajos:

  • Recuperación de Información: Con la ayuda de estas técnicas potentes, podemos construir motores de búsqueda influyentes que nos ayudan a encontrar respuestas basadas en consultas de usuario en archivos, documentos o medios almacenados.
  • Operaciones de Búsqueda de Similitud: Esto está bien organizado e indexado; nos ayuda a encontrar la similitud entre diferentes ocurrencias en los datos vectoriales.
  • Clasificación y Agrupación: Utilizando estas técnicas de embebido, podemos realizar modelos para entrenar algoritmos relevantes de aprendizaje automático y agrupar y clasificarlos.
  • Sistemas de Recomendación: Dado que las técnicas de embebido están organizadas adecuadamente, conducen a sistemas de recomendación que relacionan con precisión productos, medios y artículos basados en datos históricos.
  • Análisis de Sentimientos: Este modelo de embebido nos ayuda a categorizar y derivar soluciones de sentimientos.

Requisitos de Indización

Como sabemos, el índice mejorará la búsqueda de datos de la tabla en bases de datos tradicionales, similar a las bases de datos vectoriales, y proporcionará las características de indización.

Las bases de datos vectoriales proporcionan “Índices planos”, que son la representación directa del embebido de vector. La capacidad de búsqueda es completa y no utiliza clústeres pre-entrenados. Se realiza la consulta del vector y se calculan las distancias K para cada par mediante el embebido de vector.

  • Debido a la facilidad de este índice, se requiere un cálculo mínimo para crear los nuevos índices.
  • En efecto, un índice plano puede manejar consultas de manera efectiva y proporcionar tiempos de recuperación rápidos.

Realizamos dos tipos de búsquedas en bases de datos vectoriales: la búsqueda semántica y la búsqueda de similitud.

  • Búsqueda semántica: En lugar de buscar información por palabras clave, puedes encontrarla basándote en una metodología de conversación significativa. La ingeniería de estímulos juega un papel vital al pasar la entrada al sistema. Esta búsqueda sin duda permite una búsqueda de mayor calidad y resultados que se pueden utilizar para aplicaciones innovadoras, SEO, generación de texto y resúmenes.
  • Búsqueda de similitud: En análisis de datos, la búsqueda de similitud permite datasets no estructurados mucho mejores. En cuanto a las bases de datos vectoriales, debemos determinar la cercanía de dos vectores y cómo se parecen entre sí: tablas, texto, documentos, imágenes, palabras y archivos de audio. En el proceso de comprensión, la similitud entre vectores se revela como la similitud entre los objetos de datos en el conjunto de datos dado. Este ejercicio nos ayuda a entender la interacción, identificar patrones, extraer conocimientos y tomar decisiones desde una perspectiva de aplicación. La búsqueda semántica y de similitud nos ayudaría a construir las siguientes aplicaciones para beneficio de la industria.
  • Recuperación de información: Utilizando Open AI y bases de datos vectoriales, construiríamos motores de búsqueda para la recuperación de información utilizando las consultas de usuarios empresariales o usuarios finales y los documentos indexados dentro de la base de datos vectorial.
  • Clasificación y Agrupación: Clasificar o agrupar puntos de datos similares o grupos de objetos implica asignarlos a múltiples categorías basándose en características compartidas.
  • Detección de anomalías: Descubrir anomalías en patrones habituales midiendo la similitud de los puntos de datos y detectando irregularidades.

Tipos de Medidas de Similitud en Bases de Datos Vectoriales

Los métodos de medición dependen de la naturaleza de los datos y la aplicación específica. Comúnmente, se utilizan tres métodos para medir la similitud y familiaridad con Aprendizaje Automático.

Distancia Euclidiana

En términos simples, la distancia entre dos vectores es la distancia en línea recta entre los dos puntos que miden el valor.

Producto Punto

Esto nos ayuda a entender la alineación entre dos vectores, indicando si apuntan en la misma dirección, en direcciones opuestas o son perpendiculares entre sí.

Similitud del Coseno

Evaluación de la similitud de dos vectores utilizando el ángulo entre ellos, como se muestra en la figura. En este caso, los valores y la magnitud de los vectores son insignificantes y no afectan los resultados; solo se considera el ángulo en el cálculo.

Las bases de datos tradicionales buscan coincidencias exactas de declaraciones SQL y recuperan los datos en formato tabular. Al mismo tiempo, al lidiar con bases de datos vectoriales, buscamos el vector más similar a la consulta de entrada en inglés claro utilizando técnicas de Ingeniería de Estímulos. La base de datos utiliza el algoritmo de búsqueda de Vecino Más Cercano Aproximado (ANN) para encontrar datos similares. Siempre proporciona resultados razonablemente precisos con un alto rendimiento, precisión y tiempo de respuesta.

Mecanismo de Funcionamiento

  • Las bases de datos vectoriales primero convierten los datos en vectores de incrustación, los almacenan en las bases de datos vectoriales y crean índices para una búsqueda más rápida.
  • Una consulta de la aplicación interactuará con el vector de incrustación, buscando el vecino más cercano o datos similares en la base de datos vectorial utilizando un índice y recuperando los resultados pasados a la aplicación.
  • Basándose en los requerimientos empresariales, los datos recuperados se ajustarían, formatearían y mostrarían en el lado del usuario final o se alimentarían a la consulta o acciones.

Creando una Base de Datos Vectorial

Conéctate con Pinecone.

https://app.pinecone.io/

Puedes conectarte a Pinecone utilizando tu cuenta de Google, GitHub o Microsoft.

Crea un nuevo inicio de sesión de usuario para tu uso.

Después de iniciar sesión exitosamente, aterrizará en la página de índice; puede crear un índice para fines de su base de datos de vectores. Haga clic en el botón Crear índice.

Cree su nuevo índice proporcionando el Nombre y las Dimensiones.

Página de lista de índices,

Detalles del índice: Nombre, Región y Entorno: Necesitamos todos estos detalles para conectar nuestra base de datos de vectores desde el código de construcción del modelo.

Detalles de la configuración del proyecto,

Puede mejorar sus preferencias para múltiples índices y claves con fines de proyecto.

Hasta ahora, hemos hablado de cómo crear el índice de la base de datos de vectores y la configuración en Pinecone.

Implementación de la base de datos de vectores utilizando Python

Ahora vamos a hacer algo de programación.

Importando bibliotecas

from langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.llms import OpenAIfrom langchain.vectorstores import Pineconefrom langchain.document_loaders import TextLoaderfrom langchain.chains.question_answering import load_qa_chainfrom langchain.chat_models import ChatOpenAI

Proporcionando clave de API para OpenAI y la base de datos de vectores

import osos.environ["OPENAI_API_KEY"] = "xxxxxxxx"PINECONE_API_KEY = os.environ.get('PINECONE_API_KEY', 'xxxxxxxxxxxxxxxxxxxxxxx')PINECONE_API_ENV = os.environ.get('PINECONE_API_ENV', 'gcp-starter')api_keys="xxxxxxxxxxxxxxxxxxxxxx"llm = OpenAI(OpenAI=api_keys, temperature=0.1)

Iniciando el LLM

llm=OpenAI(openai_api_key=os.environ["OPENAI_API_KEY"],temperature=0.6)

Iniciando Pinecone

import pineconepinecone.init(    api_key=PINECONE_API_KEY,      environment=PINECONE_API_ENVindex_name = "demoindex" 

Cargando el archivo .csv para construir la base de datos de vectores

from langchain.document_loaders.csv_loader import CSVLoaderloader = CSVLoader(file_path="/content/drive/My Drive/Colab_Notebooks/cereal.csv",source_column="name")data = loader.load()

Divida el texto en fragmentos

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=20)text_chunks = text_splitter.split_documents(data)

Encontrando el texto en text_chunk

text_chunks

Salida

[Documento (page_content= ‘name: 100% Bran\nmfr: N\ntype: C\ncalories: 70\nprotein: 4\nfat: 1\nsodium: 130\nfiber: 10\ncarbo: 5\nsugars: 6\npotass: 280\nvitamins: 25\nshelf: 3\nweight: 1\ncups: 0.33\nrating: 68.402973\nrecommendation: Kids’, metadata= {‘source’: ‘100% Bran’, ‘row’: 0}), ,…..

Construyendo incrustaciones

embeddings = OpenAIEmbeddings()

Crea una instancia de Pinecone para la base de datos de vectores a partir de ‘data’

vectordb = Pinecone.from_documents(text_chunks, embeddings, index_name="demoindex")

Crea un recuperador para consultar la base de datos de vectores.

retriever = vectordb.as_retriever(score_threshold=0.7)

Recuperando datos de la base de datos de vectores

rdocs = retriever.get_relevant_documents("Cocoa Puffs")rdocs

Usando el modelo y recuperando los datos

from langchain.prompts import PromptTemplate
prompt_template = """Dado el siguiente contexto y una pregunta, genera una respuesta basada únicamente en este contexto. Por favor di "No lo sé". No intentes inventar una respuesta.
CONTEXTO: {contexto}
PREGUNTA: {pregunta}"""
PROMPT = PromptTemplate(template=prompt_template, input_variables=["contexto", "pregunta"])
chain_type_kwargs = {"prompt": PROMPT}

from langchain.chains import RetrievalQA
chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever, input_key="query", return_source_documents=True, chain_type_kwargs=chain_type_kwargs)

Vamos a consultar los datos.

chain('¿Podrías recomendarme un cereal para niños, por favor?')

Resultado de la consulta

{'query': '¿Podrías recomendarme un cereal para niños, por favor?', 'result': [Documento(contenido_pagina='nombre: Crispix\nfabricante: K\ntipo: C\ncalorías: 110\nproteína: 2\ngrasa: 0\nsodio: 220\nfibra: 1\ncarbohidratos: 21\nazúcares: 3\npotasio: 30\nvitaminas: 25\nestante: 3\npeso: 1\ncopas: 1\nrating: 46.895644\nrecomendación: Niños', metadatos={'fila': 21.0, 'fuente': '/content/drive/My Drive/Colab_Notebooks/cereal.csv'}), ..]

Conclusión

Espero que puedas entender cómo funcionan las bases de datos de vectores, sus componentes, arquitectura y características en las soluciones de IA generativa. Comprende cómo la base de datos de vectores es diferente de una base de datos tradicional y cómo se compara con los elementos convencionales de una base de datos. Sin duda, la analogía te ayudará a entender mejor la base de datos de vectores. Los pasos de creación de la base de datos de vectores e indexación de Pinecone te ayudarán a crear una base de datos de vectores y serán la clave para implementar el siguiente código.

Puntos clave

  • Compatible con datos estructurados, no estructurados y semi-estructurados.
  • Adapta técnicas de incrustación y características altamente indexadas.
  • Las interacciones ocurren a través de texto plano utilizando un indicador (por ejemplo, inglés). Y los datos se almacenan en representaciones matemáticas.
  • La similitud se calibra en las bases de datos de vectores a través de la distancia euclidiana, la similitud del coseno y el producto punto.

Preguntas frecuentes

Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Noticias de Inteligencia Artificial

Conoce el nuevo modelo Zeroscope v2 un modelo gratuito de texto a video que se ejecuta en tarjetas gráficas modernas.

En una serie de eventos sin precedentes, se ha lanzado al mercado un modelo de inteligencia artificial de código abie...

Inteligencia Artificial

Conoce DiffusionDet Un Modelo de Inteligencia Artificial (IA) Que Utiliza Difusión para la Detección de Objetos

La detección de objetos es una técnica poderosa para identificar objetos en imágenes y videos. Gracias al aprendizaje...

Inteligencia Artificial

Presentamos OpenChat La plataforma gratuita y sencilla para construir chatbots personalizados en minutos.

Enseña a tus chatbots cualquier tema conectándolos a recursos como PDFs, sitios web, Notion, Confluence y Office 365.

Inteligencia Artificial

Top 50 Herramientas de Escritura de IA para Probar (Agosto 2023)

Grammarly Grammarly es una gran herramienta para mejorar la escritura. Revisa la gramática, ortografía, puntuación y ...

Inteligencia Artificial

Impresora 3D permite entrega rápida y económica en la oficina de correos

Una nueva oficina de correos en Bengaluru, India, es la primera en el mundo en ser construida utilizando una impresor...

Ciencia de Datos

10 hiperparámetros confusos de XGBoost y cómo ajustarlos como un profesional en 2023.

Un tutorial detallado y visual sobre cómo ajustar 10 de los hiperparámetros más confusos de XGBoost con Optuna.