Introdução geral
O DeepSeek-RAG-Chatbot é um sistema baseado no DeepSeek O modelo R1 construiu um projeto de chatbot de código aberto, hospedado no GitHub, criado pelo desenvolvedor SaiAkhil066. Ele combina a tecnologia RAG (Retrieval Augmented Generation, geração aumentada de recuperação) para ajudar os usuários a carregar documentos (por exemplo, arquivos PDF, DOCX ou TXT) a fim de obter uma recuperação eficiente de documentos e perguntas e respostas inteligentes executadas localmente. O projeto utiliza recursos avançados, como pesquisa híbrida (BM25 + FAISS), reordenação neural e gráfico de conhecimento (GraphRAG) para garantir que informações contextualmente precisas e relevantes sejam extraídas dos documentos. Ele é adequado para cenários que exigem proteção da privacidade ou uso off-line, como gerenciamento de conhecimento pessoal e processamento de documentos corporativos. O projeto oferece suporte à interface Docker e Streamlit, que é fácil de instalar e os usuários podem começar a usar facilmente.
Lista de funções
- Upload e processamento de documentosSuporte para upload de arquivos em PDF, DOCX, TXT, etc., divisão automática de documentos e geração de embeddings vetoriais.
- Mecanismo de pesquisa híbrido: em conjunto com BM25 e FAISS para recuperar rapidamente o conteúdo relevante dos documentos.
- Suporte a gráficos de conhecimento (GraphRAG)Crie um gráfico de conhecimento de documentos para entender as relações entre entidades e melhorar a precisão contextual das respostas.
- reordenação neuralReordenação dos resultados da pesquisa usando um modelo de codificador cruzado para garantir que as informações mais relevantes sejam exibidas primeiro.
- Extensão de consulta (HyDE)Geração de respostas hipotéticas para ampliar as consultas dos usuários e melhorar a recuperação.
- Execuções de modelos locais: através de Ollama apoiar algo DeepSeek R1 e outros modelos são implantados localmente para garantir a privacidade dos dados.
- Fluxo de respostas em tempo realSaída de streaming: a saída de streaming é fornecida para que os usuários possam ver os resultados gerados instantaneamente.
- Suporte ao DockerSimplifique a instalação e a operação com a implantação em contêineres do Docker.
- Interface StreamlitInterface gráfica intuitiva para facilitar o upload de arquivos e o bate-papo interativo.
Usando a Ajuda
Processo de instalação
O DeepSeek-RAG-Chatbot oferece suporte à operação local e requer algumas configurações de ambiente. Veja a seguir as etapas detalhadas de instalação:
pré-condições
- sistema operacional: Windows, macOS ou Linux.
- Requisitos de hardwarePelo menos 8 GB de RAM (recomenda-se 16 GB) e uma placa de vídeo habilitada para CUDA se estiver usando aceleração de GPU.
- dependência de softwarePython 3.8+, Git, Docker (opcional).
Etapa 1: Clonar o projeto
- Abra um terminal e execute o seguinte comando para clonar seu repositório do GitHub:
git clone https://github.com/SaiAkhil066/DeepSeek-RAG-Chatbot.git
- Vá para o catálogo de projetos:
cd DeepSeek-RAG-Chatbot
Etapa 2: Configurando o ambiente Python
- Crie um ambiente virtual:
python -m venv venv
- Ativar o ambiente virtual:
- Windows:
venv\Scripts\activate
- macOS/Linux:
source venv/bin/activate
- Atualize o pip e instale as dependências:
pip install --upgrade pip
pip install -r requirements.txt
As dependências incluem streamlit
elangchain
efaiss-gpu
(se houver uma GPU), etc.
Etapa 3: Instalar e configurar o Ollama
- Faça o download e instale o Ollama (acesse ollama.com para obter o pacote de instalação).
- Puxe o modelo DeepSeek R1 (parâmetros padrão 7B, outras versões como 1.5B ou 32B estão disponíveis conforme necessário):
ollama pull deepseek-r1:7b
ollama pull nomic-embed-text
- Certifique-se de que o serviço Ollama esteja em execução e que o endereço de escuta padrão seja
localhost:11434
.
Etapa 4: (Opcional) Implantação do Docker
Se não quiser configurar seu ambiente manualmente, você pode usar o Docker:
- Instale o Docker (consulte docker.com).
- Execute-o no diretório raiz do projeto:
docker-compose up
- O Docker extrai automaticamente os serviços do Ollama e do chatbot, executa-os e, em seguida, acessa o
http://localhost:8501
.
Etapa 5: Inicie o aplicativo
- Execute o Streamlit em um ambiente virtual:
streamlit run app.py
- O navegador abrirá automaticamente o
http://localhost:8501
, entre na tela de bate-papo.
Funções de operação
Função 1: Upload de documentos
- Como chegar à interfaceInterface do Streamlit: Uma vez iniciada, a interface do Streamlit tem uma barra lateral "Upload Documents" (Carregar documentos) no lado esquerdo da tela.
- Selecionar arquivoClique no botão "Browse files" (Procurar arquivos) para selecionar um arquivo local PDF, DOCX ou TXT.
- Processamento de documentosTempo de processamento: Depois de carregado, o sistema divide automaticamente o documento em partes menores, gera embeddings vetoriais e os armazena no FAISS. O tempo de processamento varia de acordo com o tamanho do arquivo e, em geral, é de alguns segundos a alguns minutos.
- chamar a atenção para algoMensagem de confirmação: Uma mensagem de confirmação "File processing complete" (Processamento de arquivo concluído) é exibida na barra lateral.
Função 2: Questionamento e pesquisa
- Problemas de entradaDigite uma pergunta na caixa de bate-papo em chinês ou inglês, por exemplo, "Qual é o objetivo do GraphRAG conforme mencionado na documentação? na documentação.
- processo de recuperação::
- O sistema usa o BM25 e o FAISS para recuperar fragmentos de documentos relevantes.
- O GraphRAG analisa os relacionamentos de entidades entre fragmentos.
- A reordenação neural otimiza a ordem dos resultados.
- O HyDE amplia a consulta para abranger um conteúdo mais relevante.
- Gerar respostasDeepSeek R1: o DeepSeek R1 gera respostas com base nos resultados da pesquisa, e as respostas são geradas em um formato de fluxo contínuo e exibidas passo a passo na interface.
- exemplo típicoSe você perguntar "O que é pesquisa híbrida?" poderá retornar "Hybrid search combines BM25 and FAISS, BM25 is responsible for keyword matching and FAISS quickly locates content through vector similarity" (A pesquisa híbrida combina o BM25 e o FAISS, o BM25 é responsável pela correspondência de palavras-chave e o FAISS localiza rapidamente o conteúdo por meio da similaridade vetorial).
Função 3: Aplicação do gráfico de conhecimento
- Ativar o GraphRAGAtivado por padrão, nenhuma ação adicional é necessária.
- Fazer perguntas complexasPor exemplo, "Qual é o relacionamento cooperativo entre a Empresa A e a Empresa B?". .
- Mostra de resultadosO sistema não apenas retorna texto, mas também fornece respostas relacionais com base no gráfico de conhecimento, por exemplo, "A Empresa A e a Empresa B assinaram um acordo de cooperação técnica em 2023".
Função 4: Ajuste de modelos e parâmetros
- Modelo de substituição: em
.env
Modificar no arquivoMODEL
por exemplo, paradeepseek-r1:1.5b
. - otimizar o desempenhoSe for compatível com o hardware, instale o
faiss-gpu
Com a aceleração da GPU ativada, as velocidades de recuperação podem ser aumentadas em até três vezes.
Dicas e truques
- Suporte a vários documentosArquivos: Vários arquivos podem ser carregados ao mesmo tempo e o sistema integrará o conteúdo para responder às perguntas.
- clareza dos problemasSejam o mais específicos possível ao fazer perguntas e evitem declarações vagas para melhorar a precisão de suas respostas.
- Verifique os registrosSe encontrar um erro, verifique os registros do terminal para solucionar o problema, como, por exemplo, se o modelo não foi baixado ou se a porta está ocupada.
advertência
- PrivacidadeNão é necessária conexão com a Internet para a operação local e os dados não são carregados na nuvem.
- ocupação de recursosModelos grandes e cálculos de vetores de alta dimensão exigem muita memória, portanto, é recomendável fechar programas irrelevantes.
- Atualização do modeloOperação regular
ollama pull
Obtenha a versão mais recente do modelo DeepSeek.
Depois que as etapas acima forem concluídas, os usuários poderão interagir com o DeepSeek-RAG-Chatbot por meio de seus navegadores e desfrutar de uma experiência eficiente de questionamento de documentos.