LEIA ISSO EM INGLÊS
LangChain-Chatchat (anteriormente Langchain-ChatGLM)
Baseado em grandes modelos de linguagem, como ChatGLM, e estruturas de aplicativos como Langchain, é um projeto de aplicativo RAG e agente de código aberto que pode ser implantado offline.
Visão geral
Introdução à função
Visão geral dos recursos 0.3.x
Estruturas e modelos de inferência de modelo compatíveis
Comece rapidamente
instalação e implantação do pip
Instalação de código-fonte e implantação/implantação de desenvolvimento
Implantação do Docker
Marcos do projeto
Contate-nos
?️ Um aplicativo de perguntas e respostas baseado na base de conhecimento local implementado usando ideias de langchain. O objetivo é construir uma solução de perguntas e respostas de base de conhecimento que seja amigável para cenários chineses e modelos de código aberto e possa ser executada offline.
? Inspirado no projeto document.ai de GanymedeNil e no Pull Request ChatGLM-6B criado por Alex Zhangji, foi estabelecido um aplicativo de perguntas e respostas de base de conhecimento local que pode ser implementado usando modelos de código aberto em todo o processo. Na versão mais recente deste projeto, frameworks como Xinference e Ollama podem ser usados para acessar modelos como GLM-4-Chat, Qwen2-Instruct, Llama3, etc., contando com o framework langchain para suportar chamadas de serviços por meio de APIs fornecidas com base no FastAPI ou usando o WebUI baseado no Streamlit.
✅ Este projeto suporta o LLM de código aberto convencional, incorporando modelos e bancos de dados vetoriais no mercado, e pode realizar a implantação privada offline de todos os modelos de código aberto. Ao mesmo tempo, este projeto também apoia a chamada OpenAI GPT API e continuará a expandir o acesso a vários modelos e APIs de modelo no futuro.
⛓️ O princípio de implementação deste projeto é mostrado na figura abaixo. O processo inclui carregamento de arquivos -> leitura de texto -> segmentação de texto -> vetorização de texto -> vetorização de perguntas -> correspondência top k
no vetor de texto que é mais semelhante ao. vetor de pergunta top k
-> O texto correspondente é adicionado prompt
como contexto e pergunta -> Enviado ao LLM
para gerar uma resposta.
? Vídeo de introdução ao princípio
Do ponto de vista do processamento de documentos, o processo de implementação é o seguinte:
? Este projeto não envolve processos de ajuste fino ou treinamento, mas o ajuste fino ou o treinamento podem ser usados para otimizar o efeito deste projeto.
? O código usado na versão 0.3.0
da imagem AutoDL foi atualizado para a versão v0.3.0
deste projeto.
? A imagem do Docker será atualizada em um futuro próximo.
?? Se você quiser contribuir com este projeto, visite o guia de desenvolvimento para obter mais informações sobre desenvolvimento e implantação.
Função | 0.2.x | 0.3.x |
---|---|---|
Acesso ao modelo | Local: chat rápido On-line: XXXModelWorker | Local: model_provider, suporta a maioria das estruturas de carregamento de modelo convencionais Online: oneapi Todos os acessos do modelo são compatíveis com openai sdk |
Agente | ❌Instável | ✅Otimizado para ChatGLM3 e Qwen, os recursos do agente foram significativamente aprimorados |
Conversa LLM | ✅ | ✅ |
Conversa na base de conhecimento | ✅ | ✅ |
conversa no mecanismo de pesquisa | ✅ | ✅ |
conversa de arquivo | ✅Somente recuperação de vetores | ✅Unificado na função File RAG, suportando vários métodos de pesquisa, como BM25 + KNN |
Diálogo de banco de dados | ❌ | ✅ |
Diálogo de imagem multimodal | ❌ | ✅ É recomendado usar qwen-vl-chat |
Diálogo de Literatura ARXIV | ❌ | ✅ |
Conversa Wolfram | ❌ | ✅ |
Imagem Vicentina | ❌ | ✅ |
Gestão da base de conhecimento local | ✅ | ✅ |
WEBUI | ✅ | ✅Melhor suporte multisessão, palavras de prompt do sistema personalizadas... |
As funções principais da versão 0.3.x são implementadas pelo Agente, mas os usuários também podem implementar chamadas de ferramenta manualmente:
Modo de operação | Funções implementadas | Cenários aplicáveis |
---|---|---|
Marque "Ativar Agente" e selecione várias ferramentas | Chamada automática de ferramentas por LLM | Use modelos com recursos de agente, como ChatGLM3/Qwen ou API online |
Marque "Ativar Agente" e selecione uma única ferramenta | LLM analisa apenas parâmetros de ferramenta | O agente modelo usado tem capacidades médias e não consegue selecionar ferramentas muito bem. Quero selecionar funções manualmente. |
Desmarque "Ativar Agente" e selecione uma única ferramenta | Sem utilizar a função Agente, preencha manualmente os parâmetros para chamar a ferramenta. | O modelo usado não possui recursos de agente |
Desmarque qualquer ferramenta e carregue uma imagem | Conversa de imagem | Use modelos multimodais como qwen-vl-chat |
Para obter mais recursos e atualizações, experimente a implantação real.
Este projeto já suporta modelos recentes de linguagem grande de código aberto e modelos de incorporação que são convencionais no mercado, como GLM-4-Chat e Qwen2-Instruct. Esses modelos exigem que os usuários iniciem a estrutura de implantação do modelo por conta própria e acessem o projeto modificando o. informações de configuração. Este projeto As estruturas de implantação de modelo local suportadas são as seguintes:
Estrutura de implantação de modelo | Xinferência | IA local | Ollama | Bate-papo rápido |
---|---|---|---|---|
Alinhamento da interface da API OpenAI | ✅ | ✅ | ✅ | ✅ |
Acelere mecanismos de inferência | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Tipo de modelo de acesso | LLM, Incorporação, Reclassificação, Texto para Imagem, Visão, Áudio | LLM, Incorporação, Reclassificação, Texto para Imagem, Visão, Áudio | LLM, texto para imagem, visão | LLM, Visão |
Chamada de função | ✅ | ✅ | ✅ | / |
Mais suporte de plataforma (CPU, Metal) | ✅ | ✅ | ✅ | ✅ |
Heterogêneo | ✅ | ✅ | / | / |
conjunto | ✅ | ✅ | / | / |
Link do documento operacional | Documentação | Documentação LocalAI | Documentação de Ollama | Documentação do FastChat |
Modelos disponíveis | Xinference já suporta modelos | LocalAI já suporta modelos | Ollama já suporta modelos | FastChat já suporta modelos |
Além da estrutura de carregamento de modelo local mencionada acima, o projeto também fornece suporte para acesso de estrutura One API a APIs on-line, incluindo OpenAI ChatGPT, API Azure OpenAI, Anthropic Claude, Zhipu Qingyan, Baichuan e outras APIs de acesso on-line comumente usadas. usar.
Observação
Sobre o carregamento de modelos locais do Xinference: Os modelos integrados do Xinference serão baixados automaticamente. Se desejar que ele carregue o modelo baixado localmente, você pode executar streamlit run xinference_manager.py
no diretório project tools/model_loaders após iniciar o serviço Xinference. prompts de página: Basta especificar o modelo para definir o caminho local.
? Em termos de software, este projeto tem suporte para uso no ambiente Python 3.8-3.11 e foi testado em sistemas operacionais Windows, macOS e Linux.
? Em termos de hardware, como a versão 0.3.0 foi modificada para suportar o acesso a diferentes estruturas de implantação de modelos, ela pode ser usada em diferentes condições de hardware, como CPU, GPU, NPU, MPS, etc.
A partir da versão 0.3.0, Langchain-Chachat fornece um método de instalação na forma de uma biblioteca Python. Para instalação específica, execute:
pip instalar langchain-chatchat -U
Importante
Para garantir que a biblioteca Python usada seja a versão mais recente, é recomendável usar a fonte oficial Pypi ou a fonte Tsinghua.
Observação
Como a estrutura de implantação do modelo Xinference requer instalação adicional da biblioteca de dependência Python correspondente ao se conectar ao Langchain-Chachat, é recomendado usar o seguinte método de instalação ao usá-lo com a estrutura Xinference:
pip instalar "langchain-chatchat[xinference]" -U
A partir da versão 0.3.0, Langchain-Chatchat não carrega mais modelos diretamente com base no caminho do modelo local inserido pelo usuário. Os tipos de modelos envolvidos incluem LLM, Embedding, Reranker e modelos multimodais que serão suportados no futuro. etc., foram alterados para Suporta acesso às principais estruturas de inferência de modelos comumente disponíveis no mercado, como Xinference, Ollama, LocalAI, FastChat, One API, etc.
Portanto, certifique-se de que antes de iniciar o projeto Langchain-Chachat, primeiro execute a estrutura de inferência do modelo e carregue o modelo necessário.
Aqui tomamos o Xinference como exemplo. Consulte a documentação do Xinference para implantação da estrutura e carregamento do modelo.
Aviso
Para evitar conflitos de dependência, coloque Langchain-Chachat e estruturas de implantação de modelo, como Xinference, em diferentes ambientes virtuais Python, como conda, venv, virtualenv, etc.
A partir da versão 0.3.1, Langchain-Chachat usa arquivos yaml
locais para configuração. Os usuários podem visualizar e modificar diretamente o conteúdo, e o servidor será atualizado automaticamente sem reiniciar.
Defina o diretório raiz onde o Chatchat armazena arquivos de configuração e arquivos de dados (opcional)
# no linux ou macosexport CHATCHAT_ROOT=/path/to/chatchat_data # no windowsset CHATCHAT_ROOT=/path/to/chatchat_data
Se esta variável de ambiente não for definida, o diretório atual será usado automaticamente.
Execute a inicialização
inicialização do chatchat
Este comando faz o seguinte:
Crie todos os diretórios de dados necessários
Copiar exemplos de conteúdo da base de conhecimento
Gerar arquivo de configuração yaml
padrão
Modificar arquivo de configuração
Configure o modelo (model_settings.yaml)
Você precisa realizar a configuração de acesso ao modelo de acordo com a estrutura de inferência do modelo selecionada na etapa 2. Modele a estrutura de inferência e carregue o modelo e o modelo carregado. Para obter detalhes, consulte os comentários em model_settings.yaml
. Modifique principalmente o seguinte conteúdo:
# O nome LLM padrão DEFAULT_LLM_MODEL: qwen1.5-chat # O nome de incorporação padrão DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # Altere as chaves de `llm_model, action_model` em `LLM_MODEL_CONFIG` para o modelo LLM correspondente# existe Modifique as informações da plataforma do modelo correspondente em `MODEL_PLATFORMS`
Configurar o caminho da base de conhecimento (basic_settings.yaml) (opcional)
A base de conhecimento padrão está localizada em CHATCHAT_ROOT/data/knowledge_base
. Se desejar colocar a base de conhecimento em um local diferente ou conectar-se a uma base de conhecimento existente, você poderá modificar o diretório correspondente aqui.
# Caminho de armazenamento padrão da base de conhecimento KB_ROOT_PATH: D:chatchat-testdataknowledge_base # Caminho de armazenamento padrão do banco de dados. Se você usar sqlite, poderá modificar DB_ROOT_PATH diretamente; se usar outros bancos de dados, modifique SQLALCHEMY_DATABASE_URI diretamente. DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # URI de conexão do banco de dados de informações da base de conhecimento SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
Configurar base de conhecimento (kb_settings.yaml) (opcional)
A base de conhecimento FAISS
é usada por padrão. Se desejar se conectar a outros tipos de bases de conhecimento, você pode modificar DEFAULT_VS_TYPE
e kbs_config
.
Aviso
Antes de inicializar a base de conhecimento, certifique-se de que a estrutura de inferência do modelo e o modelo embedding
correspondente foram iniciados e que a configuração de acesso ao modelo foi concluída de acordo com a etapa 3 acima.
bate-papo kb -r
Para mais funções, consulte chatchat kb --help
O seguinte log aparece indicando sucesso:
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
Observação
Perguntas frequentes sobre a inicialização da base de conhecimento
Este problema ocorre frequentemente em ambientes virtuais recém-criados e pode ser confirmado por:
from unstructured.partition.auto import partition
Se a instrução travar e não puder ser executada, você pode executar o seguinte comando:
pip desinstalar python-magic-bin# verifique a versão do pacote desinstalado pip install 'python-magic-bin=={versão}'
Em seguida, siga as instruções nesta seção para recriar a base de conhecimento.
início do bate-papo -a
Quando a seguinte interface aparecer, a inicialização foi bem-sucedida:
Aviso
Como o endereço de escuta padrão DEFAULT_BIND_HOST
configurado pelo chatchat é 127.0.0.1, ele não pode ser acessado através de outros IPs.
Se precisar acessar através do IP da máquina (como sistema Linux), será necessário alterar o endereço de escuta para 0.0.0.0 em basic_settings.yaml
.
Para configuração de conversação de banco de dados, acesse aqui para obter instruções de configuração de conversação de banco de dados.
Consulte o guia de desenvolvimento para instalação e implantação do código-fonte.
janela de encaixe pull chatimage/chatchat:0.3.1.3-93e2c87-20240829 docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829 # Espelho doméstico
Importante
Fortemente recomendado: use a implantação do docker-compose, consulte README_docker para obter detalhes
A estrutura do 0.3.x mudou muito e é altamente recomendável reimplantar de acordo com a documentação. O guia a seguir não garante 100% de compatibilidade e sucesso.
Primeiro siga as etapas de安装部署
para configurar o ambiente operacional e modificar o arquivo de configuração.
Copie o diretório Knowledge_base do projeto 0.2.x para o diretório DATA
configurado
2023年4月
: Langchain-ChatGLM 0.1.0
foi lançado, suportando perguntas e respostas da base de conhecimento local com base no modelo ChatGLM-6B.
2023年8月
: Langchain-ChatGLM
foi renomeado como Langchain-Chatchat
, versão 0.2.0
foi lançada, usando fastchat
como solução de carregamento de modelo, suportando mais modelos e bancos de dados.
2023年10月
: Langchain-Chatchat 0.2.5
foi lançado, lançando conteúdo do Agente, e o projeto de código aberto ganhou o terceiro prêmio no hackathon realizado por Founder Park & Zhipu AI & Zilliz
.
2023年12月
: Langchain-Chatchat
recebeu mais de 20 mil estrelas.
2024年6月
: Langchain-Chatchat 0.3.0
é lançado, trazendo uma nova estrutura de projeto.
? Vamos aguardar ansiosamente a futura história do Chatchat...
O código deste projeto segue o protocolo Apache-2.0.
? Projeto Langchain-Chachat Grupo de comunicação WeChat Se você também estiver interessado neste projeto, você está convidado a participar do chat em grupo para participar de discussões e intercâmbios.
? Conta pública oficial do projeto Langchain-Chachat, bem-vindo ao escanear o código QR a seguir.
Se este projeto for útil para sua pesquisa, cite-nos:
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }