Mejorando la inteligencia y la eficiencia de ChatGPT: el poder de LangChain y Milvus
Esta publicación se publicó originalmente en TheSequence y se vuelve a publicar aquí con permiso.
Aunque ChatGPT ha ganado una popularidad significativa, con muchas personas utilizando su API para desarrollar sus chatbots o explorar Langchain, no está exento de desafíos.
ChatGPT a menudo puede crear la ilusión de inteligencia. Los usuarios pueden interactuar con un chatbot que emplea jerga compleja, solo para darse cuenta más tarde de que el bot genera respuestas sin sentido o inventa enlaces 404 inexistentes.
El almacenamiento de contexto es otro obstáculo. ChatGPT solo conserva registros de la sesión en curso, lo que significa que un bot entrenado hace apenas unos días puede actuar como si no tuviera ningún recuerdo de la sesión. Esta "amnesia" resalta la necesidad de un chatbot que pueda preservar y recuperar datos.
El costo y el rendimiento son consideraciones significativas al usar ChatGPT o incluso modelos de código abierto más pequeños para la inferencia. En muchos casos, esto puede ser costoso, requerir varios A100 y una cantidad sustancial de tiempo. Los desarrollos deben abordar los cuellos de botella de rendimiento antes de incorporar modelos de lenguaje grandes (LLMs) en aplicaciones en tiempo real.
Mejorar la inteligencia de ChatGPT es donde entra en juego la combinación de LangChain y Milvus. Con la integración de LangChain y Milvus, los LLMs pueden aprovechar el poder de los almacenes vectoriales para aumentar la inteligencia y la eficiencia. ¿Cómo funciona todo esto? Profundicemos en el poder de LangChain y Milvus en aplicaciones de LLM, y luego exploremos cómo crear y mejorar tu propia aplicación de Contenido Generado por IA (AIGC).
LangChain para aplicaciones impulsadas por LLM
LangChain es un framework para desarrollar aplicaciones impulsadas por modelos de lenguaje. El framework LangChain está diseñado en torno a los siguientes principios:
- Consciente de los datos: conectar un modelo de lenguaje a otras fuentes de datos
- Agéntico: permitir que un modelo de lenguaje interactúe con su entorno
El sólido framework de LangChain consta de una variedad de módulos, como Models, Prompts, Memory, Indexes, Chains, Agents y Callbacks, que son las abstracciones principales que pueden considerarse los bloques de construcción de cualquier aplicación impulsada por LLM. Para cada módulo, LangChain proporciona interfaces estándar y extensibles. LanghChain también proporciona integraciones externas e incluso implementaciones de extremo a extremo para uso inmediato.
El wrapper de LLM está en el centro de la funcionalidad de LangChain, ofreciendo una variedad de proveedores de LLM como OpenAI, Cohere, Hugging Face, etc. Proporciona una interfaz estándar para todos los LLMs e incluye herramientas comunes para trabajar con ellos.
Base de datos vectorial para LLMs
LangChain ofrece una impresionante variedad de Modelos de Lenguaje Grandes (LLMs) para satisfacer diversas necesidades. Pero eso no es todo. LangChain va más allá de lo básico al integrar varias bases de datos vectoriales como Milvus, Faiss y otras para habilitar la funcionalidad de búsqueda semántica. A través de su VectorStore Wrapper, LangChain estandariza las interfaces necesarias para simplificar la carga y recuperación de datos. Por ejemplo, usando la clase Milvus, LangChain permite el almacenamiento de vectores de características que representan documentos mediante el método from_text. El método similarity_search luego obtiene vectores de la declaración de consulta para encontrar los documentos que más se aproximan a la consulta en el espacio de embeddings, facilitando así la búsqueda semántica con facilidad.
Al profundizar más en el tema, nos damos cuenta de que las bases de datos vectoriales tienen un papel significativo en las aplicaciones de LLM, como se evidencia en el chatgpt-retrieval-plugin. Pero ahí no termina su utilidad. Las bases de datos vectoriales tienen una gran cantidad de otros casos de uso, lo que las convierte en un componente indispensable de las aplicaciones de LLM:
- Las bases de datos vectoriales facilitan el almacenamiento basado en contexto, una función útil en plataformas de LLM como Auto-GPT y BabyAGI. Esta capacidad mejora la comprensión contextual y la retención de recuerdos.
- Las bases de datos vectoriales proporcionan caché semántica para plataformas de LLM como GPTCache, lo que optimiza el rendimiento y permite ahorrar costes.
- Las bases de datos vectoriales habilitan capacidades de conocimiento de documentos, como OSSChat, que resuelven las alucinaciones.
- Y mucho más.
Si quieres obtener más información sobre Milvus y Auto-GPT, puedes leer este artículo sobre cómo Milvus impulsa Auto-GPT. En la siguiente sección, aprenderás cómo LangChain y Milvus pueden abordar las alucinaciones.
Por qué LangChain + Milvus pueden resolver las alucinaciones
En inteligencia artificial, hay un dicho que afirma que el sistema generará con frecuencia "alucinaciones", lo que significa inventar hechos no relacionados con la realidad. Algunos incluso describen ChatGPT como "un tipo seguro de sí mismo que puede escribir tonterías muy convincentes", y el problema de las alucinaciones socava la credibilidad de ChatGPT.
Las bases de datos vectoriales ilustradas en el siguiente diagrama abordan el problema de las alucinaciones. Primero, almacena los documentos oficiales como vectores de texto en Milvus y busca documentos relevantes en respuesta a la pregunta (la línea naranja en el diagrama). Chatgpt responde a la pregunta basándose en el contexto correcto, lo que da como resultado la respuesta esperada (la línea verde en el diagrama).
Diagrama que muestra Langchain, Milvus y ChatGPT
El ejemplo anterior muestra que combinar Milvus y ChatGPT es muy sencillo. No hay necesidad de etiquetar datos, entrenarlos o desarrollarlos, ni ajustarlos finamente – solo necesitas convertir datos de texto en datos vectoriales e insertarlos en Milvus. La combinación Langchain-Milvus-ChatGPT crea almacenamiento de texto, y la respuesta final se deriva de consultar el contenido de la biblioteca de documentos.
Esto garantiza que el chatbot reciba el conocimiento correcto, reduciendo eficazmente la probabilidad de errores. Por ejemplo, como administrador de la comunidad, cuando necesito responder preguntas relacionadas con la comunidad, puedo almacenar todos los documentos de la documentación oficial de Milvus.
Cuando un usuario pregunta: "Cómo usar Milvus para crear un chatbot", el chatbot responderá a la pregunta basándose en la documentación oficial, diciéndole al usuario que proporciona ejemplos de creación de aplicaciones y extracción de documentos relevantes. Este tipo de respuesta es fiable. En resumen, no necesitamos volver a entrenar ni procesarlo todo; necesitamos proporcionar el conocimiento contextual necesario a ChatGPT. Cuando enviamos una solicitud, el robot puede proporcionar contexto relacionado con el contenido oficial.
¿Te sientes emocionado después de descubrir el poder de Milvus y Langchain para ChatGPT? Si es así, prepárate para llevar adelante el desarrollo de tu aplicación. ¡Formemos equipo y creemos un chatbot mejorado utilizando las increíbles capacidades combinadas de LangChain y Milvus!
Crea tu propia aplicación con LangChain y Milvus
0. Requisitos previos
Primero, instala LangChain usando el comando pip install langchain. En cuanto a Milvus, tienes dos opciones a tu disposición. Puedes instalar e iniciar Milvus de código abierto en tu sistema local o elegir la opción en la nube para probar Zilliz – un servicio nativo de la nube para Milvus que ofrece una versión de prueba gratuita. Zilliz es un servicio fácil, accesible y robusto, así que profundizaremos en cómo usar Zilliz Cloud para la aplicación, y LangChain facilita su uso.
1. Cargar datos para la base de conocimiento
Primero, necesitamos cargar datos en un formato estándar. Además de cargar el texto, necesitamos dividirlo en fragmentos pequeños. Esto es necesario para asegurarnos de pasar solo los fragmentos de texto más pequeños y relevantes al modelo de lenguaje.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
loader = TextLoader('state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
A continuación, ahora que tenemos pequeños fragmentos de texto, necesitamos crear incrustaciones para cada fragmento de texto y almacenarlas en un almacén vectorial. La creación de incrustaciones se realiza para que podamos usar las incrustaciones para encontrar solo los fragmentos de texto más relevantes que enviar al modelo de lenguaje. Esto se hace con las siguientes líneas. Aquí usamos las incrustaciones de OpenAI y Zilliz Cloud.
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={
"uri": "YOUR_ZILLIZ_CLOUD_URI",
"user": "YOUR_ZILLIZ_CLOUD_USERNAME",
"password": "YOUR_ZILLIZ_CLOUD_PASSWORD",
"secure": True
}
)
2. Consultar datos
Así que ahora que hemos cargado los datos, podemos usarlos en una cadena de preguntas y respuestas.
Consulta el fragmento de código a continuación, que aborda la parte 3, "Resolver alucinaciones", de este artículo. Puede ayudarte a comprender completamente el concepto.
Esto implica buscar documentos relacionados con nuestra consulta dada en la base de conocimientos. Para lograrlo, usa el método similarity_search para generar el vector de características de la consulta y luego buscar en Zilliz Cloud vectores con coincidencias similares, junto con el contenido de sus documentos asociados.
query = "What did the president say about Ketanji Brown Jackson"
docs = vector_db.similarity_search(query)
Luego ejecuta load_qa_chain para obtener la respuesta final. Proporciona la interfaz más genérica para responder preguntas. Carga una cadena que puede hacer QA para los documentos de entrada y usa TODO el texto de los documentos.
El código siguiente usa OpenAI como LLM. Al ejecutarse, QAChain recibe input_documents y question como entrada. input_documents es el documento relacionado con la query en la base de datos. Luego, el LLM organiza la respuesta en función del contenido de estos documentos y la pregunta realizada.
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)
Por qué Milvus es mejor para la aplicación AIGC
Así que si quieres hacer que tus aplicaciones de Contenido Generado por Inteligencia Artificial (AIGC) sean más fiables, es necesario contar con una base de datos vectorial que represente texto. Pero ¿por qué elegir la base de datos vectorial Milvus?
- Búsqueda semántica: Milvus almacena los vectores de características semánticas extraídos, lo que permite una recuperación semántica inteligente y conveniente, algo difícil para las bases de datos tradicionales. Las bases de datos vectoriales hacen que la recuperación semántica sea más inteligente y conveniente.
- Escalabilidad: La compatibilidad con el escalado en clúster y en la nube permite almacenar y recuperar miles de millones de entidades fácilmente. La escalabilidad es esencial para las aplicaciones en las que la velocidad y la eficiencia son primordiales.
- Búsqueda híbrida: Milvus admite la búsqueda mixta de datos vectoriales y escalares, lo que puede satisfacer diferentes escenarios y requisitos de búsqueda.
- APIs completas: Milvus proporciona APIs multilenguaje, incluidas Python, Java, Go, Restful y más; Milvus es fácil de integrar y usar en diversas aplicaciones.
- Integración de LLMs: Las integraciones con varios LLMs, incluidos OpenAI Plugin, Langchain y LLamaIndex, permiten a los usuarios personalizar aún más sus aplicaciones.
- Múltiples configuraciones: Diseñamos Milvus para admitir muchos casos de uso, desde tu portátil local hasta productos en la nube como Milvus-lite, contenedores docker, implementaciones distribuidas y uso en la nube. Esto hace que Milvus sea fácilmente adaptable a diferentes tamaños de aplicación, admitiendo desde pequeños proyectos hasta la recuperación de datos a nivel empresarial.
Próximo paso para tu aplicación
En el ámbito de la IA, constantemente nuevos avances y tecnologías revolucionarias pueden elevar tu aplicación al siguiente nivel. Aquí, repasaremos dos formas de mejorar tu aplicación: implementar GPTCache y ajustar modelos de embedding y prompts. Esto puede mejorar el rendimiento y la calidad de búsqueda, diferenciar tu aplicación y proporcionar una mejor experiencia de usuario.
Mejora el rendimiento de tu aplicación AIGC - GPTCache
Si quieres optimizar el rendimiento y ahorrar costos para tu aplicación AIGC, echa un vistazo a GPTCache. Este proyecto innovador está diseñado para crear una caché semántica para almacenar respuestas de LLM.
Entonces, ¿cómo ayuda esto? Al almacenar en caché las respuestas a los LLMs, y una base de datos vectorial puede recuperar preguntas similares para obtener la respuesta almacenada en caché, tu aplicación puede responder a los usuarios de forma rápida y precisa. Con GPTCache, acceder a respuestas almacenadas en caché se vuelve muy sencillo: no más generaciones de respuestas redundantes, lo que en última instancia ahorra tiempo y recursos computacionales. GPTCache va un paso más allá al mejorar la experiencia general del usuario. Proporcionar respuestas más rápidas y precisas satisfará a tu usuario, y tu aplicación tendrá más éxito.
Mejora la calidad de tu búsqueda - ajusta tus modelos de embedding y prompts
Además de utilizar GPTCache, ajustar tus modelos de embedding y prompts puede mejorar la calidad de tus resultados de búsqueda. Los modelos de embedding son un componente crucial de las aplicaciones de IA, ya que son los bloques fundamentales que traducen texto en vectores numéricos, que el deep learning puede procesar. Al ajustar tus modelos de embedding, puedes mejorar la precisión y la relevancia de tus resultados de búsqueda semántica. Esto implica ajustar los modelos para priorizar palabras clave y frases específicas, y modificar sus mecanismos de ponderación y puntuación para reflejar mejor las necesidades y preferencias de tu público objetivo. Con un modelo de embedding bien entrenado, tu aplicación AIGC puede interpretar y categorizar con precisión la entrada del usuario, lo que conduce a resultados de búsqueda más precisos.
Aparte de eso, los prompts utilizados en las aplicaciones desempeñan un papel esencial en la mejora de la calidad de los resultados de búsqueda. Los prompts son las frases que tu IA utiliza para solicitar información a los usuarios, como "¿Cómo puedo ayudarte hoy?" o "¿Qué tienes en mente?". Al probar y modificar estos prompts, puedes mejorar la calidad y la relevancia de tus resultados de búsqueda. Por ejemplo, si tu aplicación está orientada a una industria o grupo demográfico específico, puedes adaptar tus prompts para reflejar el lenguaje y la terminología utilizados por ese grupo. Esto ayuda a guiar a los usuarios hacia consultas de búsqueda más relevantes, lo que conduce a una experiencia más satisfactoria al satisfacer sus necesidades con mayor precisión. Al perfeccionar los prompts para cumplir con los requisitos de los usuarios, puedes ayudarlos a lograr búsquedas más exitosas, lo que conduce a una base de usuarios más satisfecha.
Al final
En resumen, LangChain y Milvus son las recetas perfectas para los desarrolladores que crean aplicaciones impulsadas por LLM desde cero. LangChain ofrece una interfaz estándar y fácil de usar para los LLM, mientras que Milvus proporciona capacidades de almacenamiento y recuperación notables. LangChain y Milvus pueden mejorar la inteligencia y la eficiencia de ChatGPT, lo que te ayuda a superar los obstáculos de las alucinaciones. Aún mejor, con GPTCache, prompts y tecnologías de ajuste de modelos, podemos mejorar nuestras aplicaciones de IA de formas que nunca creímos posibles.
A medida que seguimos ampliando los límites de la IA, colaboremos y creemos un futuro más brillante para que AIGC explore el potencial ilimitado de la inteligencia artificial.
Sigue leyendo

The AWS Outage Was a Wake-Up Call for Vector Database Cross-Region Disaster Recovery
Zilliz Cloud Had the Answer Before the Crisis. Zilliz Cloud is the world's first vector database with native cross-region disaster recovery.

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.



