Proyecto de aplicación RAG y Agent de código abierto e implementable sin conexión, basado en grandes modelos de lenguaje como ChatGLM, Qwen, Llama y el framework Langchain.
Descripción Detallada del Proyecto Langchain-Chatchat
Resumen del Proyecto
Langchain-Chatchat (anteriormente Langchain-ChatGLM) es un proyecto de código abierto, implementable sin conexión, basado en modelos de lenguaje grandes y marcos de aplicación como Langchain, que implementa aplicaciones RAG (Generación Aumentada por Recuperación) y Agent. El proyecto está dedicado a establecer un conjunto de soluciones de preguntas y respuestas de bases de conocimiento que sean amigables con el escenario chino y el soporte de modelos de código abierto, y que puedan ejecutarse sin conexión.
- Dirección de GitHub: https://github.com/chatchat-space/Langchain-Chatchat
Características Principales
1. Soporte Multimodelo
El proyecto soporta los principales modelos de lenguaje grandes de código abierto disponibles en el mercado:
- Serie GLM: GLM-4-Chat, ChatGLM, etc.
- Serie Qwen: Qwen2-Instruct, Qwen-VL-Chat, etc.
- Serie Llama: Llama3, etc.
- API en línea: Soporte para llamadas a la API OpenAI GPT
2. Múltiples Marcos de Implementación
Soporta múltiples marcos de implementación de modelos, proporcionando formas flexibles de acceso:
Marco | Xinference | LocalAI | Ollama | FastChat |
---|---|---|---|---|
Alineación de la interfaz API de OpenAI | ✅ | ✅ | ✅ | ✅ |
Motor de inferencia acelerada | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Tipos de modelos de acceso | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Text-to-Image, Vision | LLM, Vision |
3. Funciones de Diálogo Ricas
La versión 0.3.x proporciona múltiples modos de diálogo:
Función | 0.2.x | 0.3.x |
---|---|---|
Diálogo LLM | ✅ | ✅ |
Diálogo de base de conocimiento | ✅ | ✅ |
Diálogo de motor de búsqueda | ✅ | ✅ |
Diálogo de archivos | ✅ Solo recuperación vectorial | ✅ Unificado como función File RAG, soporta múltiples métodos de recuperación como BM25+KNN |
Diálogo de base de datos | ❌ | ✅ |
Diálogo de imágenes multimodales | ❌ | ✅ Recomendado usar qwen-vl-chat |
Diálogo de literatura ARXIV | ❌ | ✅ |
Diálogo de Wolfram | ❌ | ✅ |
Texto a imagen | ❌ | ✅ |
Agent | ❌ Inestable | ✅ Optimizado para ChatGLM3 y Qwen |
Arquitectura Técnica
Principio de Implementación de RAG
La tecnología central del proyecto se basa en la arquitectura RAG (Generación Aumentada por Recuperación):
Carga de documentos → Lectura de texto → División de texto → Vectorización de texto → Vectorización de preguntas →
Coincidencia de similitud (Top-K) → Construcción de contexto → Generación de respuestas por LLM
Funcionalidad Agent
La funcionalidad central de la versión 0.3.x se implementa mediante Agent, proporcionando tres modos de operación:
Modo de Operación | Función Implementada | Escenario Aplicable |
---|---|---|
Habilitar Agent + Múltiples Herramientas | Llamada automática a herramientas por LLM | Modelos con capacidades Agent como ChatGLM3/Qwen |
Habilitar Agent + Una Sola Herramienta | LLM solo analiza los parámetros de la herramienta | Modelos con capacidades Agent limitadas, selección manual de funciones |
No Habilitar Agent + Una Sola Herramienta | Ingreso manual de parámetros | Modelos sin capacidades Agent |
Instalación e Implementación
1. Instalación de la Biblioteca Python
pip install langchain-chatchat -U
pip install "langchain-chatchat[xinference]" -U
2. Requisitos del Entorno
- Versión de Python: 3.8-3.11
- Sistema Operativo: Windows, macOS, Linux
- Soporte de Hardware: CPU, GPU, NPU, MPS
3. Pasos de Configuración
Establecer el Directorio Raíz (Opcional)
# Linux/macOS
export CHATCHAT_ROOT=/path/to/chatchat_data
# Windows
set CHATCHAT_ROOT=/path/to/chatchat_data
Inicializar el Proyecto
chatchat init
Modificación del Archivo de Configuración
Los principales archivos de configuración incluyen:
model_settings.yaml
: Configuración del modelobasic_settings.yaml
: Configuración de la ruta básicakb_settings.yaml
: Configuración de la base de conocimiento
Inicialización de la Base de Conocimiento
chatchat kb -r
Iniciar el Servicio
chatchat start -a
4. Implementación con Docker
docker pull chatimage/chatchat:0.3.1.3-93e2c87-20240829
docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829
Escenarios de Uso
1. Preguntas y Respuestas de la Base de Conocimiento Empresarial
- Gestión y recuperación de documentos
- Compartir conocimiento interno
- Automatización del servicio al cliente
2. Investigación Académica
- Recuperación y análisis de literatura
- Diálogo de artículos académicos
- Organización de materiales de investigación
3. Gestión del Conocimiento Personal
- Organización de documentos personales
- Recuperación de notas de estudio
- Gestión de archivos de materiales
Ventajas y Características
- Completamente de Código Abierto: Sigue el protocolo Apache-2.0, el código está completamente abierto
- Implementación sin Conexión: Soporta la ejecución completamente sin conexión, protegiendo la privacidad de los datos
- Amigable con el Chino: Optimizado para escenarios chinos, soporta modelos chinos
- Marco Flexible: Soporta múltiples marcos de implementación de modelos
- Funciones Ricas: Proporciona múltiples funciones como RAG, Agent, multimodal, etc.
- Fácil de Implementar: Proporciona métodos de instalación pip e implementación Docker
Pila Tecnológica
- Marco Central: Langchain
- Marco Web: FastAPI, Streamlit
- Base de Datos Vectorial: FAISS, etc.
- Inferencia de Modelos: Xinference, Ollama, LocalAI, FastChat
- Acceso a la API: One API soporta múltiples API en línea
Este proyecto proporciona una solución completa para los usuarios que necesitan construir un sistema local de preguntas y respuestas de bases de conocimiento, especialmente adecuado para empresas y usuarios individuales con estrictos requisitos de privacidad de datos.