Modelos y plataformas de IA
LlamaIndex: Augmenta tus aplicaciones de LLM con datos personalizados de manera fÃĄcil
Los grandes modelos de lenguaje (LLM) como la serie GPT de OpenAI han sido entrenados en una amplia variedad de datos accesibles pÚblicamente, demostrando capacidades notables en la generaciÃģn de texto, resumen, respuesta a preguntas y planificaciÃģn. A pesar de su versatilidad, una pregunta frecuente gira en torno a la integraciÃģn sin problemas de estos modelos con datos personalizados, privados o propiedad de una empresa.
Las empresas y los individuos estÃĄn inundados de datos Únicos y personalizados, a menudo alojados en diversas aplicaciones como Notion, Slack y Salesforce (CRM ), o almacenados en archivos personales. Para aprovechar los LLM para estos datos especÃficos, se han propuesto y experimentado varias metodologÃas.
El ajuste fino representa uno de estos enfoques, que consiste en ajustar los pesos del modelo para incorporar conocimientos de conjuntos de datos especÃficos. Sin embargo, este proceso no estÃĄ exento de desafÃos. Requiere un esfuerzo sustancial en la preparaciÃģn de los datos, combinado con un procedimiento de optimizaciÃģn difÃcil, que requiere un cierto nivel de experiencia en aprendizaje automÃĄtico. AdemÃĄs, las implicaciones financieras pueden ser significativas, especialmente al tratar con grandes conjuntos de datos.
El aprendizaje en contexto ha surgido como una alternativa, priorizando la elaboraciÃģn de entradas y prompts para proporcionar al LLM el contexto necesario para generar salidas precisas. Este enfoque mitiga la necesidad de un retrabajo extensivo del modelo, ofreciendo un medio mÃĄs eficiente y accesible para integrar datos privados.
Pero la desventaja de esto es su dependencia de la habilidad y la experiencia del usuario en ingenierÃa de prompts. AdemÃĄs, el aprendizaje en contexto puede no ser siempre tan preciso o confiable como el ajuste fino, especialmente al tratar con datos altamente especializados o tÃĐcnicos. El entrenamiento previo del modelo en una amplia gama de textos de Internet no garantiza una comprensiÃģn de jerga especÃfica o contexto, lo que puede llevar a salidas inexactas o irrelevantes. Esto es particularmente problemÃĄtico cuando los datos privados son de un dominio de nicho o industria.
AdemÃĄs, la cantidad de contexto que se puede proporcionar en un solo prompt es limitada, y el rendimiento del LLM puede degradarse a medida que aumenta la complejidad de la tarea. TambiÃĐn hay el desafÃo de la privacidad y la seguridad de los datos, ya que la informaciÃģn proporcionada en el prompt podrÃa ser potencialmente sensible o confidencial.
Mientras la comunidad explora estas tÃĐcnicas, herramientas como LlamaIndex estÃĄn ganando atenciÃģn.
Fue iniciado por Jerry Liu, un ex cientÃfico de investigaciÃģn de Uber. Mientras experimentaba con GPT-3 el otoÃąo pasado, Liu notÃģ las limitaciones del modelo en cuanto a la gestiÃģn de datos privados, como archivos personales. Esta observaciÃģn llevÃģ al inicio del proyecto de cÃģdigo abierto LlamaIndex.
La iniciativa ha atraÃdo a inversores, asegurando $8.5 millones en una ronda reciente de financiaciÃģn de semilla.
LlamaIndex facilita la ampliaciÃģn de los LLM con datos personalizados, cerrando la brecha entre los modelos preentrenados y los casos de uso de datos personalizados. A travÃĐs de LlamaIndex, los usuarios pueden aprovechar sus propios datos con los LLM, desbloqueando la generaciÃģn de conocimiento y el razonamiento con perspectivas personalizadas.
Los usuarios pueden proporcionar a los LLM sus propios datos de manera fluida, fomentando un entorno donde la generaciÃģn de conocimiento y el razonamiento son profundamente personalizados e informativos. LlamaIndex aborda las limitaciones del aprendizaje en contexto al proporcionar una plataforma mÃĄs amigable y segura para la interacciÃģn con los datos, asegurando que incluso aquellos con experiencia limitada en aprendizaje automÃĄtico puedan aprovechar al mÃĄximo el potencial de los LLM con sus datos privados.
Conceptos de alto nivel y algunas perspectivas
1. GeneraciÃģn aumentada de recuperaciÃģn (RAG):
RAG es un proceso de dos partes diseÃąado para combinar los LLM con datos personalizados, mejorando asà la capacidad del modelo para entregar respuestas mÃĄs precisas e informadas. El proceso consiste en:
- Fase de indexaciÃģn: Esta es la fase preparatoria donde se establecen las bases para la creaciÃģn de una base de conocimiento.
- Fase de consulta: AquÃ, la base de conocimiento se busca para encontrar contexto relevante que ayude a los LLM a responder a las consultas.
Recorrido de indexaciÃģn con LlamaIndex:
- Conectores de datos: Piense en los conectores de datos como el pasaporte de sus datos a LlamaIndex. Ayudan a importar datos de diversas fuentes y formatos, encapsulÃĄndolos en una representaciÃģn simplificada de âDocumentoâ. Los conectores de datos se pueden encontrar en LlamaHub, un repositorio de cÃģdigo abierto lleno de cargadores de datos. Estos cargadores estÃĄn diseÃąados para una integraciÃģn fÃĄcil y ofrecen una experiencia de âconectar y jugarâ con cualquier aplicaciÃģn de LlamaIndex.
- Documentos / Nodos: Un Documento es como una maleta genÃĐrica que puede contener diversos tipos de datosâya sea un PDF, una salida de API o entradas de base de datos. Por otro lado, un Nodo es un fragmento o âtrozoâ de un Documento, enriquecido con metadatos y relaciones con otros nodos, asegurando una base sÃģlida para la recuperaciÃģn de datos precisa mÃĄs adelante.
- Ãndices de datos: DespuÃĐs de la ingesta de datos, LlamaIndex ayuda a indexar estos datos en un formato recuperable. DetrÃĄs de escena, descompone documentos raw en representaciones intermedias, calcula incrustaciones de vectores y deduce metadatos. Entre los Ãndices, âVectorStoreIndexâ es a menudo la elecciÃģn mÃĄs popular.
Tipo de Ãndices en LlamaIndex: clave para datos organizados
LlamaIndex ofrece diferentes tipos de Ãndices, cada uno para diferentes necesidades y casos de uso. En el nÚcleo de estos Ãndices se encuentran los ânodosâ mencionados anteriormente. Intentemos entender los Ãndices de LlamaIndex con su mecÃĄnica y aplicaciones.
1. Ãndice de lista:
- Mecanismo: Un Ãndice de lista alinea los nodos secuencialmente como una lista. DespuÃĐs de dividir los datos de entrada en nodos, se organizan en una forma lineal, listos para ser consultados secuencialmente o a travÃĐs de palabras clave o incrustaciones.
- Ventaja: Este tipo de Ãndice brilla cuando se necesita una consulta secuencial. LlamaIndex asegura la utilizaciÃģn de todos los datos de entrada, incluso si superan el lÃmite de tokens del LLM, consultando inteligentemente el texto de cada nodo y refinando las respuestas a medida que avanza por la lista.
2. Ãndice de almacenamiento de vectores:
- Mecanismo: AquÃ, los nodos se transforman en incrustaciones de vectores, almacenados localmente o en una base de datos de vectores especializada como Milvus. Cuando se consulta, recupera los nodos mÃĄs similares (top_k) y los canaliza hacia el sintetizador de respuestas.
- Ventaja: Si su flujo de trabajo depende de la comparaciÃģn de texto para similitud semÃĄntica a travÃĐs de la bÚsqueda de vectores, este Ãndice puede ser utilizado.
3. Ãndice de ÃĄrbol:
- Mecanismo: En un Ãndice de ÃĄrbol, los datos de entrada evolucionan hacia una estructura de ÃĄrbol, construida desde abajo con nodos hoja (los fragmentos de datos originales). Los nodos padre emergen como resÚmenes de los nodos hoja, creados usando GPT. Durante una consulta, el Ãndice de ÃĄrbol puede recorrer desde el nodo raÃz hasta los nodos hoja o construir respuestas directamente a partir de los nodos hoja seleccionados.
- Ventaja: Con un Ãndice de ÃĄrbol, la consulta de fragmentos de texto largos se vuelve mÃĄs eficiente, y la extracciÃģn de informaciÃģn de varios segmentos de texto se simplifica.
4. Ãndice de palabras clave:
- Mecanismo: Un mapa de palabras clave a nodos forma el nÚcleo de un Ãndice de palabras clave. Cuando se consulta, las palabras clave se extraen de la consulta, y solo los nodos asignados se destacan.
- Ventaja: Cuando se tienen consultas de usuario claras, un Ãndice de palabras clave puede ser utilizado. Por ejemplo, buscar en documentos de salud se vuelve mÃĄs eficiente cuando se centra solo en documentos pertinentes a COVID-19.
InstalaciÃģn de LlamaIndex
La instalaciÃģn de LlamaIndex es un proceso sencillo. Puede elegir instalarlo directamente desde Pip o desde el cÃģdigo fuente. (AsegÚrese de tener Python instalado en su sistema o puede usar Google Colab)
1. InstalaciÃģn desde Pip:
- Ejecute el siguiente comando:
pip install llama-index
- Nota: Durante la instalaciÃģn, LlamaIndex puede descargar y almacenar archivos locales para ciertos paquetes como NLTK y HuggingFace. Para especificar un directorio para estos archivos, use la variable de entorno âLLAMA_INDEX_CACHE_DIRâ.
2. InstalaciÃģn desde el cÃģdigo fuente:
- Primero, clone el repositorio de LlamaIndex desde GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Una vez clonado, navegue hasta el directorio del proyecto.
- NecesitarÃĄ Poetry para gestionar las dependencias de paquetes.
- Ahora, cree un entorno virtual usando Poetry:
poetry shell - Finalmente, instale los requisitos del paquete principal con:
poetry install
ConfiguraciÃģn de su entorno para LlamaIndex
1. ConfiguraciÃģn de OpenAI:
- Por defecto, LlamaIndex utiliza
gpt-3.5-turbode OpenAI para la generaciÃģn de texto ytext-embedding-ada-002para la recuperaciÃģn y las incrustaciones. - Para usar esta configuraciÃģn, necesitarÃĄ tener una
OPENAI_API_KEY. Obtenga una registrÃĄndose en el sitio web de OpenAI y creando un nuevo token de API. - Tiene la flexibilidad de personalizar el modelo de lenguaje grande subyacente (LLM) segÚn las necesidades de su proyecto. Dependiendo de su proveedor de LLM, es posible que necesite claves y tokens de entorno adicionales.
2. ConfiguraciÃģn del entorno local:
- Si prefiere no usar OpenAI, LlamaIndex cambia automÃĄticamente a modelos locales â
LlamaCPPyllama2-chat-13Bpara la generaciÃģn de texto, yBAAI/bge-small-enpara la recuperaciÃģn y las incrustaciones. - Para usar
LlamaCPP, siga la guÃa de instalaciÃģn proporcionada. AsegÚrese de instalar el paquetellama-cpp-python, idealmente compilado para soportar su GPU. Esta configuraciÃģn utilizarÃĄ alrededor de 11.5 GB de memoria en todo el CPU y GPU. - Para las incrustaciones locales, ejecute
pip install sentence-transformers. Esta configuraciÃģn local utilizarÃĄ alrededor de 500 MB de memoria.
Con estas configuraciones, puede adaptar su entorno para aprovechar el poder de OpenAI o ejecutar modelos localmente, alineÃĄndose con los requisitos y recursos de su proyecto.
Un caso de uso simple: Consultar pÃĄginas web con LlamaIndex y OpenAI
Aquà hay un script de Python simple para demostrar cÃģmo puede consultar una pÃĄgina web para obtener informaciÃģn especÃfica:
!pip install llama-index html2text
<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>
<p># Introduzca su clave de API de OpenAI a continuaciÃģn:
os.environ["OPENAI_API_KEY"] = ""</p>
<p># URL que desea cargar en su almacÃĐn de vectores aquÃ:
url = "http://www.paulgraham.com/fr.html"</p>
<p># Cargue la URL en documentos (posibles mÚltiples documentos)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>
<p># Cree un almacÃĐn de vectores a partir de los documentos
index = VectorStoreIndex.from_documents(documents)</p>
<p># Cree un motor de consulta para poder hacer preguntas:
query_engine = index.as_query_engine()</p>
<p># Haga tantas preguntas como desee contra los datos cargados:
response = query_engine.query("ÂŋCuÃĄles son los 3 mejores consejos de Paul para recaudar dinero?")
print(response)
Los tres mejores consejos de Paul para recaudar dinero son: 1. Comience con un nÚmero bajo cuando estÃĐ recaudando dinero inicialmente. Esto permite flexibilidad y aumenta las posibilidades de recaudar mÃĄs fondos a largo plazo. 2. Apunte a ser rentable si es posible. Tener un plan para alcanzar la rentabilidad sin depender de financiaciÃģn adicional hace que la startup sea mÃĄs atractiva para los inversores. 3. No se optimice para la valoraciÃģn. Aunque la valoraciÃģn es importante, no es el factor mÃĄs crucial en la recaudaciÃģn de fondos. EnfÃģquese en obtener los fondos necesarios y encontrar buenos inversores en su lugar.
Con este script, ha creado una herramienta poderosa para extraer informaciÃģn especÃfica de una pÃĄgina web simplemente haciendo una pregunta. Esto es solo un vislumbre de lo que se puede lograr con LlamaIndex y OpenAI al consultar datos web.
LlamaIndex vs Langchain: ElecciÃģn basada en su objetivo
Su elecciÃģn entre LlamaIndex y Langchain dependerÃĄ del objetivo de su proyecto. Si desea desarrollar una herramienta de bÚsqueda inteligente, LlamaIndex es una buena opciÃģn, destacÃĄndose como un mecanismo de almacenamiento inteligente para la recuperaciÃģn de datos. Por otro lado, si desea crear un sistema como ChatGPT con capacidades de plugin, Langchain es su opciÃģn. No solo facilita mÚltiples instancias de ChatGPT y LlamaIndex, sino que tambiÃĐn amplÃa la funcionalidad permitiendo la construcciÃģn de agentes multitarea. Por ejemplo, con Langchain, puede crear agentes capaces de ejecutar cÃģdigo de Python mientras realizan una bÚsqueda en Google simultÃĄneamente. En resumen, mientras LlamaIndex sobresale en el manejo de datos, Langchain orquesta mÚltiples herramientas para ofrecer una soluciÃģn holÃstica.

LlamaIndex Logo Artwork created using Midjourney


















