devv.ai es cómo construir un sistema RAG eficiente 🔎 Prometimos compartir un poco sobre la tecnología subyacente de devv.ai en esta serie de hilos, donde compartiremos nuestras prácticas específicas en este proyecto. Este es el primer artículo. También hemos abierto un repositorio de GitHub específicamente para enviar comentarios y sugerencias. Bienvenidos los comentarios. 🧵github.com/devv-ai/devv
RAG 的全称是:Retrieval Augmented Generation(检索增强生成) 最初来源于 2020 年 Facebook 的一篇论文:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(是的,你没有看错,2020 年就有这项技术了)。
Este documento aborda un problema muy simple: cómo permitir que un modelo de lenguaje utilice conocimiento externo para la generación. Normalmente, el conocimiento de los modelos pre-entrenados se almacena en los parámetros, lo que hace que el modelo no tenga acceso al conocimiento fuera del conjunto de entrenamiento (por ejemplo, datos de búsqueda, conocimiento de la industria). La práctica anterior implicaba volver a ajustar el modelo pre-entrenado cada vez que se obtenía nuevo conocimiento.
A continuación está el contenido que necesita ser traducido : 'Este tipo de enfoque presenta varios problemas: 1. Se necesita ajustar finamente cada vez que hay un nuevo conocimiento 2. El costo de entrenar el modelo es muy alto. Por lo tanto, este artículo propone el método RAG, donde el modelo pre-entrenado es capaz de comprender nuevos conocimientos, por lo que simplemente le proporcionamos el nuevo conocimiento que queremos que el modelo comprenda a través de un prompt.'
Entonces, un sistema RAG mínimo está compuesto por 3 partes: 1. Modelo de lenguaje 2. Conjunto de conocimientos externos requeridos por el modelo (almacenados en forma de vectores) 3. Conocimientos externos necesarios para el escenario actual
langchain, llama-index 本质上就是做的这套 RAG 系统(当然还包括构建在 RAG 上的 agent)。 如果理解了本质,其实是没有必要再额外增加一层抽象的,根据自己的业务情况来搭建这套系统即可。 例如,我们为了保持高性能,采用了 Go + Rust 的架构,能够支持高并发的 RAG 请求。
'Simplificar el problema, ya sea que esté construyendo cualquier tipo de RAG, optimizar este sistema implica optimizar estos 3 módulos por separado.'
1)El modelo de lenguaje ¿por qué este artículo de 2020 solo se ha vuelto popular este año? Una razón principal es que los modelos base anteriores no eran lo suficientemente capaces. Si el modelo base es tonto, incluso si se le proporciona un conocimiento externo rico, el modelo no puede razonar sobre ese conocimiento. También se puede ver que hay una mejora en algunos benchmarks del artículo, pero no es particularmente significativa.