Este é um projeto no qual estou trabalhando agora, estou tentando compilar uma lista de perguntas e respostas para entrevistas de IA generativa.
Estou usando essa referência como base, crédito a eles pela compilação, porém, estou tomando muita liberdade na edição das perguntas, assim como nas respostas, são totalmente minhas.
Observação: estou tentando reduzir ao mínimo as respostas que escrevo, já que não sou de forma alguma ou formo uma fonte confiável sobre esse assunto. Fornecerei referências da melhor maneira possível. Abstive-me de adicionar qualquer tipo de auxílio visual para facilitar a leitura e manter a complexidade da manutenção ao mínimo. Os recursos e referências que cito contêm uma riqueza de informações, principalmente com recursos visuais.
Pretendo expandir isso para IA generativa em geral, não apenas para linguagem, cobrindo tudo, desde modelos de difusão até modelos de linguagem de visão. Assim que tiver a estrutura básica definida e estiver satisfeito com os resultados preliminares, trabalharei no estabelecimento de uma metodologia eficiente para contribuir para este repositório e depois o abrirei para contribuições, mas, por enquanto, quero mantê-lo simples e focado.
Importante:
Acho que pode ser necessário esclarecer que as respostas que forneço, independentemente de serem de minha autoria ou de estar citando uma fonte, não são de forma alguma definitivas, o que estou tentando fazer é começar no caminho certo e lhe dar uma ideia geral do que esperar, você definitivamente deveria ler todo e qualquer recurso que eu forneço, e mais alguns. Se você quer que esta seja sua última parada, este é o lugar errado para você. É aqui que tudo começa.
Além disso, se você está apenas começando, meu único conselho é:
Fique confortável lendo jornais, porque eles nunca terminam.
Artigo sobre como ler um artigo: Como ler um artigo
1. LLM e princípios básicos de solicitação
2. Geração Aumentada de Recuperação (RAG)
3. Estratégias de fragmentação
4. Incorporação de modelos para recuperação
5. Recuperação de Vetores, Bancos de Dados e Índices
6. Algoritmos de pesquisa avançada
7. Funcionamento interno do modelo de linguagem
Vamos considerar um conjunto de dados, onde cada ponto de dados representa um gato. Vamos passar para cada tipo de modelo e ver como eles diferem:
Vamos construir a definição de um Large Language Model (LLM) desde o início:
Leitura adicional: Rastreamento Comum
Grandes modelos de linguagem geralmente são treinados em vários estágios; esses estágios costumam ser chamados de pré-treinamento, ajuste fino e alinhamento.
O objetivo desta etapa é expor o modelo a toda a linguagem , de forma não supervisionada, muitas vezes é a parte mais cara do treinamento e requer muita computação. O pré-treinamento geralmente é feito em algo como o conjunto de dados Common Crawl; versões processadas do conjunto de dados, como FineWeb e RedPajama, são frequentemente usadas para pré-treinamento. Para facilitar esse amplo tipo de aprendizagem, existem várias tarefas de treinamento que podemos usar, como Masked Language Modeling (MLM), Next Sentence Prediction (NSP) e muito mais.
A modelagem da linguagem de máscara é baseada no teste Cloze, onde mascaramos uma palavra em uma frase e pedimos ao modelo para predizê-la. Semelhante a um teste de preencher o espaço em branco. É diferente de pedir ao modelo para prever a próxima palavra em uma frase, pois exige que o modelo compreenda o contexto da frase, e não apenas a sequência de palavras.
A previsão da próxima frase é uma tarefa em que o modelo recebe duas sentenças e deve prever se a segunda sentença segue a primeira. Por mais simples que pareça, exige que o modelo compreenda o contexto da primeira frase e a relação entre as duas frases.
Um excelente recurso para aprender mais sobre essas tarefas é o artigo do BERT.
Essa etapa é muito mais simples que o pré-treinamento, pois o modelo já aprendeu muito sobre a linguagem, e agora só precisamos ensiná-lo sobre uma tarefa específica. Tudo o que precisamos para esta etapa são os dados de entrada (prompts) e os rótulos (respostas).
Esta fase é muitas vezes a mais crucial e complexa, requer a utilização de modelos de recompensa separados, a utilização de diferentes paradigmas de aprendizagem, como a Aprendizagem por Reforço, e muito mais.
Esta etapa visa principalmente alinhar as previsões do modelo com as preferências do ser humano. Esta fase muitas vezes se entrelaça com a fase de ajuste fino. A leitura essencial para esta etapa é o artigo InstructGPT, este artigo introduziu o conceito de Aprendizagem por Reforço a partir de Feedback Humano (RLHF) que usa Otimização de Política Proximal.
Outros métodos para alinhar as previsões do modelo com as preferências humanas incluem:
Tokens são a menor unidade de texto que o modelo pode entender, podem ser palavras, subpalavras ou caracteres.
Os tokenizadores são responsáveis por converter texto em tokens, eles podem ser tão simples quanto dividir o texto por espaços, ou tão complexos quanto usar tokenização de subpalavras. A escolha do tokenizer pode ter um impacto significativo no desempenho do modelo, pois pode afetar a capacidade do modelo de compreender o contexto do texto.
Alguns tokenizadores comuns incluem:
Leitura recomendada (e observação):
Esta é uma pergunta muito carregada, mas aqui estão alguns recursos para explorar mais este tópico:
Os parâmetros incluem:
Cada um desses parâmetros pode ser ajustado para melhorar o desempenho do modelo e a qualidade do texto gerado.
Leitura recomendada:
Estratégias de decodificação são usadas para escolher o próximo token na sequência, podendo variar desde uma simples decodificação gananciosa até estratégias de amostragem mais complexas.
Algumas estratégias de decodificação comuns incluem:
As estratégias de decodificação mais recentes incluem a decodificação especulativa (decodificação assistida), que é um conceito selvagem, que envolve o uso de tokens candidatos de um modelo menor (portanto, mais rápido) para gerar uma resposta de um modelo maior muito rapidamente.
Leitura recomendada:
No processo de decodificação, os LLMs geram texto de forma autorregressiva, um token por vez. Existem vários critérios de parada que podem ser usados para determinar quando parar a geração de texto. Alguns critérios de parada comuns incluem:
A prompt contains any of the following elements:
Instruction - a specific task or instruction you want the model to perform
Context - external information or additional context that can steer the model to better responses
Input Data - the input or question that we are interested to find a response for
Output Indicator - the type or format of the output.
Referência: Guia de Engenharia Prompt
Leitura recomendada:
Referência: Guia de Engenharia Prompt
Leitura recomendada:
A aprendizagem in-context é um paradigma de aprendizagem muito intuitivo e fácil de entender em Processamento de Linguagem Natural. Abrange conceitos como aprendizado em poucas tentativas. Pode ser tão fácil quanto fornecer alguns exemplos da tarefa que você deseja que o modelo execute, e o modelo aprenderá com esses exemplos e gerará respostas adequadas.
Leitura recomendada:
Foi demonstrado que a Aprendizagem In-Context só pode surgir quando os modelos são dimensionados para um determinado tamanho e quando os modelos são treinados em um conjunto diversificado de tarefas. A aprendizagem contextual pode falhar quando o modelo não é capaz de realizar tarefas complexas de raciocínio.
Leitura recomendada:
Esta é uma questão muito ampla, mas o seguinte irá ajudá-lo a formar uma compreensão básica de como projetar prompts para uma tarefa específica:
Alternativamente, direções de pesquisa mais recentes investigam usando uma forma algorítmica de otimizar os prompts, isso foi explorado extensivamente no pacote DSPy, que fornece os meios para fazer isso, seu trabalho também é publicado neste artigo.
Não há resposta para esta pergunta, coloquei como desculpa para vincular esta referência:
Existem vários métodos para fazer com que os LLMs gerem resultados estruturados que sempre podem ser analisados. Os métodos comuns dependem do conceito de chamada de função nos LLMs.
Leitura e visualização recomendadas:
The term describes when LLMs produce text that is incorrect, makes no sense, or is unrelated to reality
Referência: Alucinação LLM - Tipos, Causas e Solução por Nexla
Leitura recomendada:
O conceito de Solicitação de Cadeia de Pensamento é conhecido por aprimorar as capacidades de raciocínio em LLMs. Esta técnica envolve dividir uma tarefa complexa em uma série de tarefas mais simples e fornecer ao modelo os resultados intermediários de cada tarefa para orientá-lo em direção ao resultado final.
Leitura recomendada:
A Geração Aumentada de Recuperação (RAG) é um padrão de design comum para fundamentar as respostas do LLM em fatos. Esta técnica envolve a recuperação de informações relevantes de uma base de conhecimento e sua utilização para orientar a geração de texto pelo LLM.
Leitura recomendada:
A Geração Aumentada de Recuperação (RAG) é composta por dois componentes principais:
A intuição por trás do RAG é que, ao combinar os pontos fortes dos modelos baseados em recuperação e baseados em geração, podemos criar um sistema capaz de gerar texto baseado em fatos, limitando assim a alucinação.
O RAG costuma ser a técnica ideal para responder perguntas complexas com base em uma base de conhecimento, pois permite que o modelo aproveite informações externas para fornecer respostas mais precisas e informativas. Nem sempre é viável ajustar um modelo com base em dados proprietários, e o RAG fornece uma maneira de incorporar conhecimento externo sem a necessidade de ajuste fino.
Uma solução completa que utiliza RAG para responder a uma pergunta complexa com base em uma base de conhecimento envolveria as seguintes etapas:
Esta é uma pergunta muito carregada, mas aqui estão alguns recursos para explorar mais este tópico:
Segmentar texto é o processo de dividir um grande pedaço de texto em pedaços menores e mais gerenciáveis. No contexto dos sistemas RAG, o chunking é importante porque permite que o componente recuperador recupere com eficiência informações relevantes da base de conhecimento. Ao dividir a consulta em partes menores, o recuperador pode se concentrar na recuperação de informações relevantes para cada parte, o que pode melhorar a precisão e a eficiência do processo de recuperação.
Durante o treinamento de modelos de incorporação, que são frequentemente usados como recuperadores, pares de texto positivos e negativos são usados para indicar quais partes do texto correspondem entre si. Os exemplos incluem títulos, cabeçalhos e subcabeçalhos em uma página da Wikipédia e seus parágrafos correspondentes. , postagens do reddit e seus comentários mais votados, etc.
Uma consulta do usuário geralmente é incorporada e um índice é consultado; se o índice contivesse documentos inteiros para serem consultados em busca dos k principais resultados, um recuperador não seria capaz de retornar as informações mais relevantes, pois os documentos a serem consultados seria grande demais para ser compreendido.
Para resumir, fragmentamos o texto porque:
Suponha que temos um livro contendo 24 capítulos, num total de 240 páginas. Isso significaria que cada capítulo contém 10 páginas e cada página contém 3 parágrafos. Suponhamos que cada parágrafo contenha 5 frases e cada frase contenha 10 palavras. No total, temos: 10*5*3*10 = 1.500 palavras por capítulo. Também temos 1.500 * 24 = 36.000 palavras em todo o livro. Para simplificar, nosso tokenizer é um tokenizer de espaço em branco e cada palavra é um token.
Sabemos que temos, no máximo, um modelo de incorporação capaz de incorporar 8.192 tokens:
Tudo isso é para ilustrar que não existe uma maneira fixa de fragmentar o texto, e a melhor maneira de fragmentar o texto é experimentar e ver o que funciona melhor para o seu caso de uso.
Uma fonte confiável sobre este tópico é o excelente caderno e o vídeo de Greg Kamradt, no qual eles explicam os diferentes níveis de divisão de texto.
O caderno também aborda maneiras de avaliar e visualizar os diferentes níveis de divisão de texto e como usá-los em um sistema de recuperação.
Visualização recomendada:
Incorporações vetoriais são o mapeamento da semântica textual em um espaço N-dimensional onde os vetores representam texto, dentro do espaço vetorial, texto semelhante é representado por vetores semelhantes.
Leitura recomendada:
Os modelos de incorporação são modelos de linguagem treinados com a finalidade de vetorizar texto, geralmente são derivados de BERT e são treinados em um grande corpus de texto para aprender a semântica do texto. No entanto, tendências recentes também mostram que é possível usar modelos de linguagem muito maiores para este fim, como Mistral ou Llama.
Leitura e visualização recomendadas:
Os modelos de incorporação são frequentemente usados como recuperadores, para utilizar seus recursos de recuperação, a similaridade textual semântica é usada onde os vetores produzidos pelos modelos são medidos em similaridade usando métricas como produto escalar, similaridade de cosseno, etc.
Leitura recomendada:
Os modelos de incorporação são treinados com perda contrastiva, variando desde perda contrastiva simples até funções de perda mais complexas, como InfoNCE e Multiple Negative Ranking Loss. Um processo conhecido como mineração negativa forte também é utilizado durante o treinamento.
Leitura recomendada:
A aprendizagem contrastiva é uma técnica usada para treinar modelos de incorporação, envolve aprender a diferenciar entre pares de texto positivos e negativos. O modelo é treinado para maximizar a similaridade entre pares positivos e minimizar a similaridade entre pares negativos.
Leitura recomendada:
Codificadores cruzados e bi-codificadores são dois tipos de modelos usados para tarefas de recuperação de texto. A principal diferença entre os dois é como eles codificam a consulta e o documento.
Os reclassificadores geralmente são codificadores cruzados, eles codificam a consulta e o documento juntos e calculam a semelhança entre os dois. Isso lhes permite capturar a interação entre a consulta e o documento e produzir melhores resultados do que os bi-codificadores, ao custo de uma complexidade computacional muito maior.
Os modelos de incorporação de texto são geralmente bi-codificadores, eles codificam a consulta e o documento separadamente e calculam a semelhança entre os dois embeddings. Isso permite que eles sejam mais eficientes computacionalmente do que os codificadores cruzados, mas não são capazes de capturar a interação explícita entre a consulta e o documento.
Representações densas de vetor único são frequentemente a norma em modelos de incorporação de texto, geralmente são produzidas agrupando os embeddings contextualizados após uma passagem direta do modelo. As técnicas de agrupamento incluem agrupamento médio, agrupamento máximo e agrupamento de token CLS. A intuição por trás das representações densas de vetores únicos é que elas são simples de implementar e podem ser usadas para uma ampla gama de tarefas, bem como facilidade de indexação e recuperação. Representações densas também são capazes de capturar a semântica do texto e são frequentemente utilizadas na classificação de segundo estágio.
As representações densas de múltiplos vetores demonstraram produzir resultados superiores às representações densas de vetores únicos, elas são produzidas pulando a etapa de agrupamento e usando os embeddings contextualizados na forma de uma matriz, os embeddings de consulta e documento são então usados para calcular a similaridade entre os dois, modelos como o ColBERT demonstraram produzir resultados superiores às representações densas de um único vetor. Um operador como MaxSim é usado para calcular a similaridade entre a consulta e os embeddings do documento. A intuição por trás das representações densas de múltiplos vetores é que elas são capazes de capturar mais informações sobre o texto e produzir melhores resultados do que representações densas de vetores únicos. Modelos como o ColBERT também oferecem a capacidade de pré-calcular incorporações de documentos, permitindo uma recuperação muito eficiente. Representações densas também são capazes de capturar a semântica do texto e são frequentemente utilizadas na classificação de segundo estágio.
Leitura recomendada:
Representações de texto esparsas são a forma mais antiga de modelos de espaço vetorial na recuperação de informações, geralmente são baseadas em derivados TF-IDF e algoritmos como BM25, e permanecem uma linha de base para sistemas de recuperação de texto. A sua escassez decorre do facto de a dimensão dos embeddings corresponder frequentemente ao tamanho do vocabulário. A intuição por trás das representações esparsas é que elas são explicáveis, computacionalmente eficientes, fáceis de implementar e extremamente eficientes para indexação e recuperação. A representação esparsa também se concentra na similaridade lexical e é frequentemente usada na classificação do primeiro estágio.
Leitura recomendada:
Incorporações de texto esparsas permitem o uso de índices invertidos durante a recuperação.
Leitura recomendada:
As métricas para avaliar o desempenho de um modelo de incorporação incluem:
Leitura e visualização recomendadas:
A escolha de um modelo de incorporação pode ser um fator fundamental no desempenho do seu sistema de recuperação, e deve-se tomar uma consideração cuidadosa ao escolher um. É um processo amplo que envolve experimentação, e os seguintes recursos irão ajudá-lo a tomar uma decisão informada:
Visualização recomendada:
Um banco de dados vetorial é um banco de dados otimizado para armazenar e consultar dados vetoriais. Ele permite o armazenamento e a recuperação eficientes de incorporações de vetores e é frequentemente usado em aplicações que exigem pesquisa de similaridade semântica. Os bancos de dados vetoriais são um novo paradigma que surgiu como parte da pilha de tecnologia necessária para acompanhar as demandas dos aplicativos GenAI.
Visualização recomendada:
Os bancos de dados tradicionais são otimizados para armazenar e consultar dados estruturados, como texto, números e datas. Eles não foram projetados para lidar com dados vetoriais de forma eficiente. Os bancos de dados vetoriais, por outro lado, são projetados especificamente para armazenar e consultar dados vetoriais. Eles usam técnicas e algoritmos de indexação especializados para permitir pesquisas de similaridade rápidas e precisas, como quantização e agrupamento de vetores.
Um banco de dados vetorial geralmente contém índices de vetores, esses índices contêm matrizes de incorporações de vetores, muitas vezes também é usada uma estrutura de dados gráfica, ordenada de tal forma que possam ser consultados com eficiência. Quando uma consulta é feita, a incorporação de texto ou vetor é fornecida como entrada; no caso de texto, ela é incorporada e o banco de dados vetorial consultará o índice apropriado para recuperar os vetores mais semelhantes com base nas métricas de distância. Normalmente, os vetores são comparados usando métricas como similaridade de cosseno, produto escalar ou distância euclidiana. Os vetores também estão relacionados a um dicionário de metadados que pode conter informações como o ID do documento, o título do documento, o texto correspondente e muito mais.
As estratégias de pesquisa em bancos de dados vetoriais incluem:
Leitura recomendada:
Uma vez que os vetores são indexados, eles geralmente são agrupados para reduzir o espaço de busca, isso é feito para reduzir o número de vetores que precisam ser comparados durante o processo de busca. O clustering é feito agrupando vetores semelhantes e depois indexando os clusters. Quando uma consulta é feita, a pesquisa é realizada primeiro no nível do cluster e depois no nível do vetor dentro do cluster. Algoritmos como K-means são frequentemente usados para agrupamento.
Leitura recomendada:
Esta é obviamente uma pergunta muito carregada, mas aqui estão alguns recursos para explorar ainda mais esse tópico:
Vector quantization, also called "block quantization" or "pattern matching quantization" is often used in lossy data compression. It works by encoding values from a multidimensional vector space into a finite set of values from a discrete subspace of lower dimension.
Referência: quantização de vetores
One general approach to LSH is to “hash” items several times, in such a way that similar items are more likely to be hashed to the same bucket than dissimilar items are.
Referência: Mineração de conjuntos de dados maciços, 3ª edição, Capítulo 3, Seção 3.4.1
Leitura recomendada:
In short, PQ is the process of:
- Taking a big, high-dimensional vector,
- Splitting it into equally sized chunks — our subvectors,
- Assigning each of these subvectors to its nearest centroid (also called reproduction/reconstruction values),
- Replacing these centroid values with unique IDs — each ID represents a centroid
Referência: quantização do produto
Leitura recomendada:
The Inverted File Index (IVF) index consists of search scope reduction through clustering.
Referência: índice de arquivo invertido
Leitura recomendada:
Os pequenos mundos de navegação hierárquica (HNSW) são frequentemente considerados a recuperação de vetores de última geração, é um algoritmo baseado em gráfico que constrói um gráfico dos vetores e o usa para executar a busca aproximada mais próxima do vizinho.
Leitura recomendada:
A distância e as métricas de similaridade usadas na recuperação de vetores incluem:
Visualização recomendada:
Este é um tópico de pesquisa muito ativo, e não existe uma fonte autorizada, mas aqui estão alguns recursos para explorar ainda mais esse tópico:
Também vale a pena notar que os sistemas de pesquisa, recuperação e reanganização são construídos com padrões e arquiteturas estabelecidos nos campos de recuperação de informações, sistemas de recomendação e mecanismos de pesquisa.
Algumas arquiteturas do sistema que você pode querer explorar incluem:
A obtenção de boa pesquisa em sistemas em larga escala envolve uma combinação de técnicas eficientes de indexação, recuperação e classificação. Algumas estratégias para obter uma boa pesquisa em sistemas em larga escala incluem:
Você pode notar que todo o processo é feito em fases de crescente complexidade, isso é conhecido como classificação em fases ou recuperação de vários estágios.
Leitura recomendada:
Mas o aspecto mais importante de alcançar uma boa pesquisa em sistemas em larga escala é experimentar e iterar em suas estratégias de recuperação e classificação e monitorar e avaliar continuamente o desempenho do seu sistema.
Leitura recomendada:
Conversas recomendadas sobre melhorar os sistemas de busca, recuperação e pano:
A obtenção de pesquisa rápida envolve otimizar o processo de indexação e recuperação, que requer esforço de engenharia não trivial, a seguir, alguns exemplos do cenário atual no campo da otimização de pesquisa e recuperação:
O estado atual da arte na recuperação de vetores indica incorporações multi-vetor (interação tardia) com desempenho melhor do que as incorporações de vetor único, no entanto, otimizar sua recuperação representa um desafio de engenharia significativo, os seguintes discuss discutem incorporados multi-vetores e sua recuperação em profundidade:
BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of their proximity within the document.
Referência: BM25
Os modelos de reranger são os modelos de classificação de sequência treinados para obter um par de consultas e documentos e produzir pontuações brutas de similaridade.
Leitura recomendada, visualização e assistência:
A avaliação dos sistemas de pano requer experimentar e avaliar os componentes individuais do sistema, como o retriever, o gerador e o re -reranker.
Leitura recomendada:
NOTA: A partir daqui, vou abster -me de responder o máximo que puder, e apenas vincular papéis e referências, essa parte é sem dúvida uma das partes mais complexas, por isso requer muita leitura e compreensão.
Para entender a atenção, você precisará estar familiarizado com a arquitetura do transformador e suas arquiteturas antecessoras. Aqui estão alguns recursos para você começar:
O principal gargalo da auto-atimento é sua complexidade quadrática em relação ao comprimento da sequência. Para entender as desvantagens da auto-atenção, você precisará se familiarizar com alternativas de atenção, o seguinte ajudará você a começar:
Existem várias maneiras de codificar informações posicionais no LLMS, a maneira mais comum é usar codificações posicionais sinusoidais, conhecidas como codificações posicionais absolutas. Outros métodos incluem codificações posicionais relativas e métodos mais recentes, como incorporações posicionais rotativas. Aqui estão alguns recursos para você começar:
Para entender o KV Cache, você precisará estar familiarizado com a arquitetura do transformador e suas limitações.
Leitura recomendada:
A mistura de especialistas é um tipo de arquitetura no LLMS, para entender como funciona, você deve passar pelos seguintes recursos, que cobrem os modelos MOE mais proeminentes: