DynamicRAG
O DynamicRAG é uma aplicação Web baseada em React que implementa um sistema dinâmico de Geração de Recuperação-Aumentada (RAG). Permite que os utilizadores introduzam texto, o processem em embeddings e executem tarefas de resposta a perguntas utilizando uma combinação de pesquisa vetorial e modelos de linguagem de grande dimensão.
informação
O código-fonte completo e as instruções detalhadas para configurar e executar este exemplo podem ser encontrados no repositório Gaia Cookbook.
Capturas de ecrã
Texto de entrada baseado no Dynamic RAG
Github Repo para RAG dinâmico
Caraterísticas
- Processamento de texto em tempo real e fragmentação
- Criação de uma base de dados vetorial dinâmica utilizando Qdrant
- Processamento em lote de grandes entradas de texto
- Integração com um nó Gaia local
- Análise do repositório do GitHub utilizando o GitIngest
- Acompanhamento do progresso e tratamento de erros
- IU limpa e reactiva utilizando CSS Tailwind e componentes shadcn/ui
Pré-requisitos
- Node.js (v16 ou superior)
- Python (para a instalação do GitIngest)
- Uma instância Qdrant em execução (local ou remota)
- Um servidor LLM local através de Gaia a correr na porta 8080 (Tutorial: https://docs.gaianet.ai/node-guide/quick-start)
- O
nómico-embutido
modelo de incorporação (descarregado automaticamente emgaianet
quando o Gaia CLI estiver instalado) - O
lhama 3.2
modelo linguístico (descarregado automaticamente emgaianet
quando o Gaia CLI é instalado. O modelo pode ser substituído consoante o caso de utilização)
Configuração
- Clonar o repositório:
git clone https://github.com/harishkotra/dynamic-rag-gaia
cd dynamic-rag
- Instalar dependências:
npm install
- Instalar o GitIngest:
pip install gitingest
- Certifique-se de que o seu servidor Qdrant está a funcionar e acessível em http://localhost:6333
- Certifique-se de que o seu nó Gaia está a funcionar e acessível em http://localhost:8080 (Tutorial: https://docs.gaianet.ai/node-guide/quick-start)
- Inicie o servidor de desenvolvimento:
npm run dev
Utilização
- Selecionar Modo de entrada:
- Entrada de texto: Cole o texto da sua base de conhecimentos na área de texto de entrada
- Repositório do GitHub: Introduzir um URL do repositório GitHub para analisar o seu conteúdo
- Fazer perguntas: Introduza a sua pergunta no campo de perguntas.
- Processar: Clique em "Submeter" para processar a sua consulta. O sistema irá:
- Para a introdução de texto: Dividir o texto de entrada em partes manejáveis
- Para repositórios do GitHub: Obter e processar o conteúdo do repositório usando GitIngest
- Criar embeddings para cada pedaço
- Armazenar embeddings numa coleção temporária de Qdrant
- Encontrar contexto relevante utilizando a pesquisa de semelhança de vectores
- Gerar uma resposta utilizando o Nó Gaia local
- Ver resultados: O sistema apresentará a resposta gerada com base no contexto relevante encontrado.
Dados técnicos
Processamento de texto
- Tamanho máximo do bloco: 2000 caracteres
- Tamanho do processamento em lote: 3 blocos de cada vez
- Os blocos são criados com base nos limites naturais do texto (parágrafos e frases)
Base de dados vetorial
- Utiliza Qdrant para armazenamento de vectores e pesquisa de semelhanças
- Cria colecções temporárias para cada sessão de consulta
- Limpa automaticamente as colecções após a utilização
- Utiliza vectores de 768 dimensões para as incorporações
Integração da API
- Compatível com pontos de extremidade de API do tipo OpenAI
- Suporta pontos finais de incorporação e de conclusão de conversação
- Utiliza o
nómico-embutido
modelo para incrustações - Utiliza o
lhama
modelo para geração de texto - Integra-se com o GitIngest para análise de repositórios
- Rotas da API NextJS para integração de ferramentas de linha de comando
Componentes
DynamicRAG.js
: Componente principal da aplicação do sistema RAGapp/api/gitingest/route.js
: Rota da API para processamento do repositório GitHub- Tratamento e validação de entradas
- Acompanhamento do progresso e visualização de erros
- Gestão de bases de dados vectoriais
- Integração do LLM
Tratamento de erros
O sistema inclui um tratamento de erros abrangente para:
- Falhas no processamento de texto
- Erros de busca e análise do repositório do GitHub
- Erros de criação de incorporação
- Operações de bases de dados vectoriais
- Falhas de consulta LLM
- Problemas de rede
Dependências
- Reagir
- Tailwind CSS
- componentes shadcn/ui
- Lodash para funções de utilidade
- Vários componentes de IU (@/components/ui/*)
informação
O código-fonte completo e as instruções detalhadas para configurar e executar este exemplo podem ser encontrados no repositório Gaia Cookbook.