Este projeto tem como objetivo criar um mecanismo de recomendação que alavancasse uma arquitetura de geração de recuperação agentic (RAG) para fornecer recomendações com reconhecimento de contexto com base nas consultas do usuário. O MVP concentra-se na modularidade e escalabilidade e utiliza tecnologias de código aberto para eficiência de custos.
Estrutura proposta de base de código:
ragsearch/
├── __init__.py
├── retrieval/
│ ├── __init__.py
│ ├── structured.py # For databases (e.g., DuckDB,sqlLite,MongoDB)
│ ├── unstructured.py # For document loaders (e.g., PDF, Word, HTML)
│ ├── base.py # Abstract base class
├── generation/
│ ├── __init__.py
│ ├── langchain.py # LangChain-based generation
│ ├── llamaindex.py # LlamaIndex-based generation
│ ├── base.py # Abstract base class
├── fusion/
│ ├── __init__.py
│ ├── simple_fusion.py # Simple query-context fusion
│ ├── attention.py # Advanced fusion strategies
│ ├── base.py # Abstract base class
├── reranking/
│ ├── __init__.py # Factory for reranking components
│ ├── bm25_reranker.py # Reranking based on BM25 scores
│ ├── neural_reranker.py # Reranking with neural models
│ ├── base.py # Abstract base class
├── llms/
│ ├── __init__.py # Factory for LLMs
│ ├── openai.py # OpenAI wrapper
│ ├── cohere.py # Cohere wrapper
│ ├── huggingface.py # HuggingFace wrapper
│ ├── base.py # Abstract base class
├── utils/
│ ├── __init__.py
│ ├── logger.py # Logging utilities
│ ├── config.py # Configuration utilities
│ ├── data.py # Data utilities
│ ├── metrics.py # Evaluation metrics
├── tests/
│ ├── __init__.py
│ ├── test_retrieval.py
│ ├── test_generation.py
│ ├── test_fusion.py
│ ├── test_reranking.py
│ ├── test_llms.py
├── main.py # Main entry point
├── config.yaml # Configuration file
├── README.md # Project documentation
├── RAG.md # Documentation for Retrieval-Augmented Generation
├── RAG-FAQ.md # FAQ for Retrieval-Augmented Generation
A geração de recuperação agenteada (RAG) é o processo de otimização da saída de um modelo de linguagem grande, por isso faz referência a uma base de conhecimento autorizada fora de suas fontes de dados de treinamento antes de gerar uma resposta. Os grandes modelos de idiomas (LLMs) são treinados em vastos volumes de dados e usam bilhões de parâmetros para gerar saída original para tarefas como responder a perguntas, traduzir idiomas e concluir frases. RAG estende os recursos já poderosos do LLMS a domínios específicos ou a base de conhecimento interna de uma organização, tudo sem a necessidade de treinar o modelo. É uma abordagem econômica para melhorar a saída do LLM, para que permaneça relevante, preciso e útil em vários contextos.
Os LLMs são uma tecnologia -chave de inteligência artificial (AI) que alimenta chatbots inteligentes e outros aplicativos de processamento de linguagem natural (PNL). O objetivo é criar bots que possam responder a perguntas do usuário em vários contextos, com fontes de conhecimento autoritárias de referência cruzada. Infelizmente, a natureza da tecnologia LLM apresenta imprevisibilidade nas respostas do LLM. Além disso, os dados de treinamento da LLM são estáticos e apresentam uma data de corte sobre o conhecimento que possui.
Apresentando informações falsas quando não possui a resposta. Apresentando informações desatualizadas ou genéricas quando o usuário espera uma resposta atual e específica. Criando uma resposta de fontes não autoritativas. Criando respostas imprecisas devido à confusão de terminologia, em que diferentes fontes de treinamento usam a mesma terminologia para falar sobre coisas diferentes. Você pode pensar no grande modelo de idioma como um novo funcionário entusiasmado que se recusa a se manter informado com os eventos atuais, mas sempre responderá a todas as perguntas com confiança absoluta. Infelizmente, essa atitude pode afetar negativamente a confiança do usuário e não é algo que você deseja que seus chatbots imitem!
RAG é uma abordagem para resolver alguns desses desafios. Ele redireciona o LLM para recuperar informações relevantes de fontes de conhecimento autorizadas e pré-determinadas. As organizações têm maior controle sobre a saída de texto gerado e os usuários obtêm informações sobre como o LLM gera a resposta.
A tecnologia RAG traz vários benefícios aos esforços generativos de IA de uma organização.
O desenvolvimento do chatbot geralmente começa a usar um modelo de fundação. Os modelos de fundação (FMS) são LLMs acessíveis API treinados em um amplo espectro de dados generalizados e não marcados. Os custos computacionais e financeiros da reciclagem de FMS para organização ou informações específicos de domínio são altos. O RAG é uma abordagem mais econômica para introduzir novos dados no LLM. Torna a tecnologia generativa de inteligência artificial (IA generativa) mais acessível e utilizável.
Mesmo que as fontes originais de dados de treinamento para um LLM sejam adequadas para suas necessidades, é um desafio manter a relevância. O RAG permite que os desenvolvedores forneçam as últimas pesquisas, estatísticas ou notícias aos modelos generativos. Eles podem usar o RAG para conectar o LLM diretamente a feeds de mídia social ao vivo, sites de notícias ou outras fontes de informação com frequência. O LLM pode fornecer as informações mais recentes aos usuários.
O RAG permite que o LLM apresente informações precisas com a atribuição de origem. A saída pode incluir citações ou referências a fontes. Os usuários também podem procurar documentos de origem se exigirem mais esclarecimentos ou mais detalhes. Isso pode aumentar a confiança e a confiança em sua solução generativa de IA.
Com o RAG, os desenvolvedores podem testar e melhorar seus aplicativos de bate -papo com mais eficiência. Eles podem controlar e alterar as fontes de informação do LLM para se adaptar às mudanças nos requisitos ou ao uso multifuncional. Os desenvolvedores também podem restringir a recuperação de informações confidenciais a diferentes níveis de autorização e garantir que o LLM gerem respostas apropriadas. Além disso, eles também podem solucionar problemas e fazer correções se o LLM fizer referência a fontes de informação incorretas para perguntas específicas. As organizações podem implementar a tecnologia de IA generativa com mais confiança para uma gama mais ampla de aplicativos.
Sem RAG, o LLM pega a entrada do usuário e cria uma resposta com base nas informações em que foi treinada - ou o que já sabe. Com o RAG, é introduzido um componente de recuperação de informações que utiliza a entrada do usuário para primeiro extrair informações de uma nova fonte de dados. A consulta do usuário e as informações relevantes são fornecidas ao LLM. O LLM usa o novo conhecimento e seus dados de treinamento para criar melhores respostas. As seções a seguir fornecem uma visão geral do processo.
Os novos dados fora do conjunto de dados de treinamento original do LLM são chamados de dados externos. Pode vir de várias fontes de dados, como APIs, bancos de dados ou repositórios de documentos. Os dados podem existir em vários formatos, como arquivos, registros de banco de dados ou texto de formato longo. Outra técnica de IA, chamada de modelos de linguagem de incorporação, converte dados em representações numéricas e o armazena em um banco de dados vetorial. Esse processo cria uma biblioteca de conhecimento que os modelos generativos de IA podem entender.
O próximo passo é executar uma pesquisa de relevância. A consulta do usuário é convertida em uma representação vetorial e combinada com os bancos de dados do vetor. Por exemplo, considere um chatbot inteligente que pode responder a perguntas de recursos humanos para uma organização. Se um funcionário pesquisar: "Quanta licença anual eu tenho?" O sistema recuperará documentos anuais de política de licença ao lado do registro de licença anterior do funcionário. Esses documentos específicos serão devolvidos porque são altamente relevantes para o que o funcionário tem contribuições. A relevância foi calculada e estabelecida usando cálculos e representações de vetores matemáticos.
Em seguida, o modelo RAG aumenta a entrada do usuário (ou avisos) adicionando os dados recuperados relevantes no contexto. Esta etapa usa técnicas de engenharia rápidas para se comunicar efetivamente com o LLM. O prompt aumentado permite que os grandes modelos de idiomas gerem uma resposta precisa para consultas do usuário.
A próxima pergunta pode ser - o que se os dados externos se tornarem obsoletos? Para manter as informações atuais para a recuperação, atualize assíncrono os documentos e atualize a incorporação de representação dos documentos. Você pode fazer isso através de processos automatizados em tempo real ou processamento periódico em lote. Esse é um desafio comum na análise de dados-abordagens diferentes de ciência de dados para o gerenciamento de mudanças podem ser usadas.
A pesquisa semântica aprimora os resultados dos trapos para organizações que desejam adicionar vastas fontes de conhecimento externas aos seus aplicativos LLM. As empresas modernas armazenam vastas quantidades de informações, como manuais, perguntas frequentes, relatórios de pesquisa, guias de atendimento ao cliente e repositórios de documentos de recursos humanos em vários sistemas. A recuperação do contexto é desafiadora em escala e, consequentemente, reduz a qualidade generativa da saída.
As tecnologias de pesquisa semântica podem digitalizar grandes bancos de dados de informações díspares e recuperar dados com mais precisão. Por exemplo, eles podem responder a perguntas como "quanto foi gasto em reparos de máquinas no ano passado?" Mapeando a pergunta para os documentos relevantes e retornando o texto específico, em vez dos resultados da pesquisa.
As soluções convencionais de pesquisa de palavras-chave em RAG produzem resultados limitados para tarefas com conhecimento de conhecimento. Os desenvolvedores também devem lidar com incorporações de palavras, chunking de documentos e outras complexidades enquanto preparam manualmente seus dados. Por outro lado, as tecnologias de pesquisa semântica fazem todo o trabalho da preparação da base de conhecimento para que os desenvolvedores não precisem. Eles também geram passagens semanticamente relevantes e palavras token ordenadas pela relevância para maximizar a qualidade da carga útil do RAG.