“Convierta los datos de su empresa en aplicaciones LLM listas para producción”, anuncia a todo volumen la página de inicio de LlamaIndex en letra de 60 puntos. OK entonces. El subtítulo es «LlamaIndex es el marco de datos líder para crear aplicaciones LLM». No estoy tan seguro de que sea el marco de datos líder, pero ciertamente estoy de acuerdo en que es un marco de datos líder para construir con grandes modelos de lenguaje, junto con LangChain y Semantic Kernel, sobre los cuales hablaremos más adelante. LlamaIndex actualmente ofrece dos de código abierto. marcos y una nube. Un marco está en Python; el otro está en TypeScript. LlamaCloud (actualmente en versión preliminar privada) ofrece almacenamiento, recuperación, enlaces a fuentes de datos a través de LlamaHub y un servicio de análisis propietario pago para documentos complejos, LlamaParse, que también está disponible como servicio independiente. LlamaIndex cuenta con fortalezas en la carga de datos, almacenamiento e indexar sus datos, realizar consultas orquestando flujos de trabajo de LLM y evaluar el rendimiento de su aplicación de LLM. LlamaIndex se integra con más de 40 almacenes de vectores, más de 40 LLM y más de 160 fuentes de datos. El repositorio de LlamaIndex Python tiene más de 30.000 estrellas. Las aplicaciones típicas de LlamaIndex realizan preguntas y respuestas, extracción estructurada, chat o búsqueda semántica y/o sirven como agentes. Pueden usar generación de recuperación aumentada (RAG) para conectar los LLM con fuentes específicas, a menudo fuentes que no se incluyeron en el entrenamiento original de los modelos. LlamaIndex compite con LangChain, Semantic Kernel y Haystack. No todos tienen exactamente el mismo alcance y capacidades, pero en lo que respecta a la popularidad, el repositorio Python de LangChain tiene más de 80.000 estrellas, casi tres veces más que LlamaIndex (más de 30.000 estrellas), mientras que el Semantic Kernel, mucho más nuevo, tiene más de 18.000 estrellas. un poco más de la mitad que LlamaIndex, y el repositorio de Haystack tiene más de 13.000 estrellas. La edad del repositorio es relevante porque las estrellas se acumulan con el tiempo; por eso también califico los números con «sobre». Las estrellas en los repositorios de GitHub están vagamente correlacionadas con la popularidad histórica. LlamaIndex, LangChain y Haystack cuentan con varias empresas importantes como usuarios, algunas de las cuales utilizan más de uno de estos marcos. Semantic Kernel es de Microsoft, que no suele molestarse en dar a conocer a sus usuarios salvo casos de estudio. IDG El marco LlamaIndex le ayuda a conectar datos, incrustaciones, LLM, bases de datos vectoriales y evaluaciones en aplicaciones. Se utilizan para preguntas y respuestas, extracción estructurada, chat, búsqueda semántica y agentes. Funciones de LlamaIndex En un alto nivel, LlamaIndex está diseñado para ayudarlo a crear aplicaciones LLM con contexto aumentado, lo que básicamente significa que combina sus propios datos con un modelo de lenguaje grande. Ejemplos de aplicaciones de LLM con contexto aumentado incluyen chatbots de respuesta a preguntas, comprensión y extracción de documentos y agentes autónomos. Las herramientas que proporciona LlamaIndex realizan la carga, indexación y almacenamiento de datos, consultan sus datos con LLM y evalúan el rendimiento de sus aplicaciones LLM: los conectores de datos absorben sus datos existentes desde su fuente y formato nativos. Los índices de datos, también llamados incrustaciones, estructuran sus datos en representaciones intermedias. Los motores brindan acceso en lenguaje natural a sus datos. Estos incluyen motores de consulta para responder preguntas y motores de chat para conversaciones de múltiples mensajes sobre sus datos. Los agentes son trabajadores del conocimiento con tecnología de LLM y mejorados con herramientas de software. Las integraciones de observabilidad/evaluación le permiten experimentar, evaluar y monitorear su aplicación. Los LLM de aumento de contexto han sido capacitados en grandes cuerpos de texto, pero no necesariamente texto sobre su dominio. Hay tres formas principales de realizar un aumento de contexto y agregar información sobre su dominio, proporcionando documentos, haciendo RAG y ajustando el modelo. El método de aumento de contexto más simple es proporcionar documentos al modelo junto con su consulta, y para eso debe Es posible que no necesite LlamaIndex. El suministro de documentos funciona bien a menos que el tamaño total de los documentos sea mayor que la ventana contextual del modelo que estás utilizando, lo cual era un problema común hasta hace poco. Ahora existen LLM con ventanas de contexto de millones de tokens, que le permiten evitar pasar a los siguientes pasos para muchas tareas. Si planea realizar muchas consultas en un corpus de un millón de tokens, querrá almacenar en caché los documentos, pero ese es un tema para otro momento. La generación de recuperación aumentada combina contexto con LLM en el momento de la inferencia, generalmente con una base de datos vectorial. Los procedimientos RAG a menudo utilizan la incrustación para limitar la longitud y mejorar la relevancia del contexto recuperado, lo que evita los límites de la ventana de contexto y aumenta la probabilidad de que el modelo vea la información que necesita para responder su pregunta. Básicamente, una función de incrustación toma una palabra o frase y la asigna a un vector de números de punto flotante; Por lo general, estos se almacenan en una base de datos que admite un índice de búsqueda de vectores. Luego, el paso de recuperación utiliza una búsqueda de similitud semántica, a menudo usando el coseno del ángulo entre la incrustación de la consulta y los vectores almacenados, para encontrar información «cercana» para usar en el mensaje aumentado. El ajuste fino de los LLM es un proceso de aprendizaje supervisado que involucra ajustar los parámetros del modelo a una tarea específica. Se realiza entrenando el modelo en un conjunto de datos más pequeño, específico de una tarea o de un dominio, que está etiquetado con ejemplos relevantes para la tarea objetivo. El ajuste fino a menudo lleva horas o días usando muchas GPU a nivel de servidor y requiere cientos o miles de ejemplos etiquetados. Instalación de LlamaIndex Puede instalar la versión Python de LlamaIndex de tres maneras: desde el código fuente en el repositorio de GitHub, usando el iniciador llama-index instalar, o usar llama-index-core más integraciones seleccionadas. La instalación inicial se vería así: pip install llama-index Esto incorpora LLM e incrustaciones de OpenAI además del núcleo LlamaIndex. Deberá proporcionar su clave API de OpenAI (consulte aquí) antes de poder ejecutar ejemplos que la utilicen. El ejemplo inicial de LlamaIndex es bastante sencillo, esencialmente cinco líneas de código después de un par de sencillos pasos de configuración. Hay muchos más ejemplos en el repositorio, con documentación. Hacer la instalación personalizada podría verse así: pip install llama-index-core llama-index-readers-file llama-index-llms-ollama llama-index-embeddings-huggingface Eso instala una interfaz para las incrustaciones de Ollama y Hugging Face. Hay un ejemplo de inicio local que acompaña a esta instalación. No importa de qué manera comiences, siempre puedes agregar más módulos de interfaz con pip. Si prefieres escribir tu código en JavaScript o TypeScript, usa LlamaIndex.TS (repo). Una ventaja de la versión TypeScript es que puedes ejecutar los ejemplos en línea en StackBlitz sin ninguna configuración local. Aún necesitarás proporcionar una clave API de OpenAI. LlamaCloud y LlamaParseLlamaCloud es un servicio en la nube que te permite cargar, analizar e indexar documentos y buscarlos usando LlamaIndex. Está en una etapa alfa privada y no pude acceder a él. LlamaParse es un componente de LlamaCloud que le permite analizar archivos PDF en datos estructurados. Está disponible a través de una API REST, un paquete Python y una interfaz de usuario web. Actualmente se encuentra en una versión beta pública. Puedes registrarte para usar LlamaParse por una pequeña tarifa basada en el uso después de las primeras 7K páginas por semana. El ejemplo dado que compara LlamaParse y PyPDF para el archivo Apple 10K es impresionante, pero no lo probé yo mismo. LlamaHubLlamaHub le brinda acceso a una gran colección de integraciones para LlamaIndex. Estos incluyen agentes, devoluciones de llamadas, cargadores de datos, incrustaciones y alrededor de otras 17 categorías. En general, las integraciones están en el repositorio de LlamaIndex, PyPI y NPM, y se pueden cargar con pip install o npm install.create-llama CLIcreate-llama es una herramienta de línea de comandos que genera aplicaciones LlamaIndex. Es una manera rápida de comenzar con LlamaIndex. La aplicación generada tiene una interfaz con tecnología Next.js y una opción de tres back-ends.RAG CLIRAG CLI es una herramienta de línea de comandos para conversar con un LLM sobre los archivos que ha guardado localmente en su computadora. Este es sólo uno de los muchos casos de uso de LlamaIndex, pero es bastante común. Componentes de LlamaIndex Las guías de componentes de LlamaIndex le brindan ayuda específica para las distintas partes de LlamaIndex. La primera captura de pantalla a continuación muestra el menú de la guía de componentes. El segundo muestra la guía de componentes para mensajes, desplazada a una sección sobre personalización de mensajes. IDG Las guías del componente LlamaIndex documentan las diferentes piezas que componen el marco. Hay bastantes componentes. IDG Estamos analizando los patrones de uso de las indicaciones. Este ejemplo en particular muestra cómo personalizar un mensaje de preguntas y respuestas para responder al estilo de una obra de Shakespeare. Este es un mensaje de tiro cero, ya que no proporciona ningún ejemplo. Aprendiendo LlamaIndex Una vez que haya leído, comprendido y ejecutado el ejemplo inicial en su lenguaje de programación preferido (Python o TypeScript), le sugiero que lea, comprenda y pruebe tantos ejemplos como le parezcan interesantes. La siguiente captura de pantalla muestra el resultado de generar un archivo llamado ensayo ejecutando essay.ts y luego haciendo preguntas sobre él usando chatEngine.ts. Este es un ejemplo del uso de RAG para preguntas y respuestas. El programa chatEngine.ts utiliza los componentes ContextChatEngine, Document, Settings y VectorStoreIndex de LlamaIndex. Cuando miré el código fuente, vi que se basaba en el modelo OpenAI gpt-3.5-turbo-16k; eso puede cambiar con el tiempo. El módulo VectorStoreIndex parecía estar usando la base de datos vectorial Qdrant de código abierto. , si estaba leyendo la documentación correctamente. IDG Después de configurar el entorno del terminal con mi clave OpenAI, ejecuté essay.ts para generar un archivo de ensayo y chatEngine.ts para responder consultas sobre el ensayo. Aportando contexto a los LLM. Como has visto. LlamaIndex es bastante fácil de usar para crear aplicaciones LLM. Pude probarlo con OpenAI LLM y una fuente de datos de archivos para una aplicación de preguntas y respuestas de RAG sin problemas. Como recordatorio, LlamaIndex se integra con más de 40 almacenes de vectores, más de 40 LLM y más de 160 fuentes de datos; Funciona para varios casos de uso, incluidas preguntas y respuestas, extracción estructurada, chat, búsqueda semántica y agentes. Sugeriría evaluar LlamaIndex junto con LangChain, Semantic Kernel y Haystack. Es probable que uno o más de ellos satisfagan sus necesidades. No puedo recomendar una sobre otras de manera general, ya que diferentes aplicaciones tienen diferentes requisitos. Ventajas Ayuda a crear aplicaciones LLM para preguntas y respuestas, extracción estructurada, chat, búsqueda semántica y agentes. Compatible con Python y TypeScript. Los marcos son gratuitos y de código abierto. Muchos ejemplos e integraciones Contras Cloud se limita a una vista previa privada El marketing es un poco exagerado CostoFuente abierta: gratis. Servicio de importación LlamaParse: 7.000 páginas por semana gratis, luego $3 por 1000 páginas. Plataforma Python y TypeScript, además de SaaS en la nube (actualmente en versión preliminar privada). Copyright © 2024 IDG Communications, Inc.