Um projeto de aplicação RAG e Agent de código aberto e implantável offline, baseado em grandes modelos de linguagem como ChatGLM, Qwen, Llama e no framework Langchain.
Apresentação Detalhada do Projeto Langchain-Chatchat
Visão Geral do Projeto
Langchain-Chatchat (anteriormente Langchain-ChatGLM) é um projeto de código aberto, implementado com base em grandes modelos de linguagem e frameworks de aplicação como Langchain, que permite a implementação offline de aplicações RAG (Retrieval-Augmented Generation) e Agent. O projeto visa estabelecer uma solução de perguntas e respostas baseada em bases de conhecimento que seja amigável ao cenário chinês e ao suporte de modelos de código aberto, e que possa ser executada offline.
- Endereço do GitHub: https://github.com/chatchat-space/Langchain-Chatchat
Principais Características
1. Suporte a Múltiplos Modelos
O projeto suporta os principais modelos de linguagem de código aberto disponíveis no mercado:
- Série GLM: GLM-4-Chat, ChatGLM, etc.
- Série Qwen: Qwen2-Instruct, Qwen-VL-Chat, etc.
- Série Llama: Llama3, etc.
- API Online: Suporta chamadas à API OpenAI GPT
2. Múltiplos Frameworks de Implantação
Suporta vários frameworks de implantação de modelos, oferecendo formas flexíveis de acesso:
Framework | Xinference | LocalAI | Ollama | FastChat |
---|---|---|---|---|
Alinhamento com a Interface da API OpenAI | ✅ | ✅ | ✅ | ✅ |
Motor de Inferência Acelerada | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Tipos de Modelos Acessados | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Text-to-Image, Vision | LLM, Vision |
3. Funcionalidades de Diálogo Ricas
A versão 0.3.x oferece vários modos de diálogo:
Funcionalidade | 0.2.x | 0.3.x |
---|---|---|
Diálogo LLM | ✅ | ✅ |
Diálogo com Base de Conhecimento | ✅ | ✅ |
Diálogo com Motor de Busca | ✅ | ✅ |
Diálogo com Arquivos | ✅ Apenas Recuperação Vetorial | ✅ Unificado como funcionalidade File RAG, suporta vários métodos de recuperação como BM25+KNN |
Diálogo com Banco de Dados | ❌ | ✅ |
Diálogo Multimodal com Imagens | ❌ | ✅ Recomendado usar qwen-vl-chat |
Diálogo com Literatura ARXIV | ❌ | ✅ |
Diálogo Wolfram | ❌ | ✅ |
Geração de Imagem a partir de Texto | ❌ | ✅ |
Agent | ❌ Instável | ✅ Otimizado para ChatGLM3 e Qwen |
Arquitetura Técnica
Princípio de Implementação RAG
A tecnologia central do projeto é baseada na arquitetura RAG (Retrieval-Augmented Generation):
Carregamento de Documentos → Leitura de Texto → Divisão de Texto → Vetorização de Texto → Vetorização de Perguntas →
Correspondência de Similaridade (Top-K) → Construção de Contexto → Geração de Resposta por LLM
Funcionalidade Agent
A funcionalidade central da versão 0.3.x é implementada pelo Agent, oferecendo três modos de operação:
Modo de Operação | Funcionalidade Implementada | Cenários Aplicáveis |
---|---|---|
Ativar Agent + Múltiplas Ferramentas | Chamada automática de ferramentas pelo LLM | Modelos com capacidade Agent como ChatGLM3/Qwen |
Ativar Agent + Ferramenta Única | LLM apenas analisa parâmetros da ferramenta | Modelos com capacidade Agent geral, seleção manual de funcionalidade |
Não Ativar Agent + Ferramenta Única | Preenchimento manual de parâmetros | Modelos sem capacidade Agent |
Instalação e Implantação
1. Instalação da Biblioteca Python
pip install langchain-chatchat -U
pip install "langchain-chatchat[xinference]" -U
2. Requisitos do Ambiente
- Versão do Python: 3.8-3.11
- Sistema Operacional: Windows, macOS, Linux
- Suporte de Hardware: CPU, GPU, NPU, MPS
3. Etapas de Configuração
Definir o Diretório Raiz (Opcional)
# Linux/macOS
export CHATCHAT_ROOT=/path/to/chatchat_data
# Windows
set CHATCHAT_ROOT=/path/to/chatchat_data
Inicializar o Projeto
chatchat init
Modificação do Arquivo de Configuração
Os principais arquivos de configuração incluem:
model_settings.yaml
: Configuração do modelobasic_settings.yaml
: Configuração do caminho básicokb_settings.yaml
: Configuração da base de conhecimento
Inicialização da Base de Conhecimento
chatchat kb -r
Iniciar o Serviço
chatchat start -a
4. Implantação com 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
Cenários de Uso
1. Perguntas e Respostas da Base de Conhecimento Empresarial
- Gerenciamento e recuperação de documentos
- Compartilhamento interno de conhecimento
- Automação do atendimento ao cliente
2. Pesquisa Acadêmica
- Recuperação e análise de literatura
- Diálogo sobre artigos acadêmicos
- Organização de materiais de pesquisa
3. Gerenciamento de Conhecimento Pessoal
- Organização de documentos pessoais
- Recuperação de notas de estudo
- Gerenciamento de arquivamento de materiais
Vantagens e Características
- Totalmente Open Source: Segue o protocolo Apache-2.0, código totalmente aberto
- Implantação Offline: Suporta execução totalmente offline, protegendo a privacidade dos dados
- Amigável ao Chinês: Otimizado para cenários chineses, suporta modelos chineses
- Framework Flexível: Suporta vários frameworks de implantação de modelos
- Funcionalidades Ricas: Oferece RAG, Agent, multimodalidade e outras funcionalidades
- Fácil de Implantar: Oferece métodos de instalação pip e implantação Docker
Stack Tecnológico
- Framework Central: Langchain
- Framework Web: FastAPI, Streamlit
- Banco de Dados Vetorial: FAISS, etc.
- Inferência de Modelo: Xinference, Ollama, LocalAI, FastChat
- Acesso à API: One API suporta várias APIs online
Este projeto fornece uma solução completa para usuários que precisam construir um sistema local de perguntas e respostas baseado em bases de conhecimento, especialmente adequado para empresas e usuários individuais com requisitos rigorosos de privacidade de dados.