运用检索增强生成优化生成式 AI:架构、算法和应用概述_模子_文档
传统上,天生式人工智能在演习时受到其参数中封装的静态知识的约束。检索增强天生模型通过利用外部知识源彻底改变了这种范式,为 AI 模型供应了实时访问和利用大量信息存储库的渠道。
RAG模型的技能框架RAG 模型通过一个精心编排的两步过程运行:检索阶段和天生阶段。检索组件常日由密集通道检索器 (DPR) 实例化,它采取类似 BERT 的架构,将查询和文档编码到共享嵌入空间中。天生组件常日是基于 Transformer 的 seq2seq 模型,该模型根据输入文档和检索文档的组合嵌入来调节其输出。
猎犬:密集通道检索检索阶段对付 RAG 架构至关主要。它利用密集的检索器,该检索器在(查询、干系文档)对的数据集上进行了微调。DPR 利用双编码器体系构造将查询和文档编码为连续空间中的向量。
# Define tokenizers for the question and context encodersbr
question_tokenizer = DPRQuestionEncoderTokenizer.from_pretrained('facebook/dpr-question_encoder-single-nq-base')br
context_tokenizer = DPRContextEncoderTokenizer.from_pretrained('facebook/dpr-ctx_encoder-single-nq-base')br
br
# Encode and retrieve documentsbr
question_tokens = question_tokenizer(query, return_tensors='pt')br
context_tokens = context_tokenizer(list_of_documents, padding=True, truncation=True, return_tensors='pt')br
br
# Encode question and context into embeddingsbr
question_embeddings = question_encoder(question_tokens)['pooler_output']br
context_embeddings = context_encoder(context_tokens)['pooler_output']br
br
# Calculate similarities and retrieve top-k documentsbr
similarity_scores = torch.matmul(question_embeddings, context_embeddings.T)br
top_k_indices = similarity_scores.topk(k).indicesbr
retrieved_docs = [list_of_documents[index] for index in top_k_indices[0]]br
在天生阶段,RAG 采取 seq2seq 框架,常日由 BART 或 T5 等模型实例化,能够根据检索到的文档供应的丰富高下文天生文本。交叉把稳力层对付模型连贯地交织输入和检索的内容至关主要。
from transformers import BartForConditionalGenerationbr
br
# Initialize seq2seq generation modelbr
seq2seq_model = BartForConditionalGeneration.from_pretrained('facebook/bart-large')br
br
# Generate response using the seq2seq model conditioned on the input and retrieved documentsbr
input_ids = tokenizer(query, return_tensors='pt').input_idsbr
outputs = seq2seq_model.generate(input_ids, encoder_outputs=document_embeddings)br
response = tokenizer.decode(outputs[0], skip_special_tokens=True)br
性能优化和打算把稳事变
演习 RAG 模型涉及同时优化密集检索器和 seq2seq 天生器。这须要将损耗从天生器的输出反向传播到检索组件,这一过程可能会引入打算繁芜性,并须要高吞吐量硬件加速器。
from torch.nn.functional import cross_entropybr
br
# Compute generation lossbr
prediction_scores = seq2seq_model(input_for_generation).logitsbr
generation_loss = cross_entropy(prediction_scores.view(-1, tokenizer.vocab_size), labels.view(-1))br
br
# Compute contrastive loss for retrievalbr
# Contrastive loss encourages the correct documents to have higher similarity scoresbr
retrieval_loss = contrastive_loss_function(similarity_scores, true_indices)br
br
# Combine losses and backpropagatebr
total_loss = generation_loss + retrieval_lossbr
total_loss.backward()br
optimizer.step()br
br
运用与启迪
RAG 模型在一系列运用中具有广泛的影响,从增强具有实时数据获取功能的对话代理到提高内容推举的干系性。它们还将对研究和学术环境中信息综合的效率和准确性产生重大影响。
限定和道德考虑实际上,RAG 模型面临着打算需求、实时运用程序中的延迟以及掩护最新外部数据库的寻衅。从道德上讲,人们担心源数据库中存在的偏见的传播以及检索信息的真实性。
结论RAG 模型代表了天生式 AI 的重大进步,引入了在天生过程中利用外部知识的能力。本文对 RAG 框架进行了技能探索,并强调了持续研究以优化其性能并确保其道德利用的必要性。随着该领域的发展,RAG 模型将重新定义 AI 天生潜力的格局,为知识驱动的运用开辟新的路子。
原文标题:Optimizing Generative AI With Retrieval-Augmented Generation: Architecture, Algorithms, and Applications Overview
原文链接:https://dzone.com/articles/optimizing-generative-ai-with-retrieval-augmented
作者:Suresh Rajasekaran
编译:LCR
本文系作者个人观点,不代表本站立场,转载请注明出处!