¿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.
- Microsoft se une a sindicatos laborales estadounidenses para discutir sobre la fuerza laboral de IA
- Meta AI anuncia Purple Llama para ayudar a la comunidad a construir de manera ética con modelos de IA abiertos y generativos.
- Investigadores de Google DeepMind proponen Código de Cadena (CoC) una extensión simple pero sorprendentemente efectiva que mejora el razonamiento del Modelo de Lenguaje (LM) impulsado por código
¿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.
Comprendiendo la Búsqueda Semántica y de Similitud
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.
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Enseñando a la IA a jugar juegos de mesa
- Investigadores de UCLA y CMU presentan Stormer Una red neuronal Transformadora escalable para una pronóstico meteorológico de mediano alcance hábil y confiable.
- Mejores funciones de manipulación de datos en PySpark
- Streaming en Ingeniería de Datos
- Acuerdo preliminar de la UE sobre la regulación de la IA Implicaciones para ChatGPT
- Investigación de Google revela Transformadores Generativos de Vocabulario Infinito (GIVT) Pioneros en secuencias de vectores de valor real en IA
- Regresando a lo humano El viaje de la IA desde el código hasta los abrazos