在做RAG以前你可以尝试的事:Prompt Caching

image.png

近年来,科技领域的创新不断涌现,为我们带来了许多令人兴奋的技术突破和应用。近期,Anthropic公司引入了与Claude配合使用的提示缓存技术(prompt caching),这项技术能够将长提示的成本降低高达90%,延迟减少高达85%。这一技术有望成为小规模检索增强生成(RAG)的一个良好替代方案。然而,实际上谷歌才是最早通过其API引入上下文缓存(context caching)技术的公司。本文将深入探讨这些技术的应用及其创新性。

image.png

Gemini API的文档处理能力

Gemini API不仅支持上下文缓存,还可以直接通过API处理PDF文件,无需任何预处理。这一创新使得我们不再需要依赖于外部的预处理库,如unstructured IO或LlamaPars。令人惊讶的是,Gemini API最近进行了重大升级,现在可以上传最多1000页的PDF文件,这基本上可以满足大多数应用场景的需求。

虽然这种方法仍然是按令牌计费,但你可以将其与上下文缓存结合使用,以节省令牌成本。以下是我们将要探讨的主要内容:

  1. Gemini API的文档处理能力
  2. 上下文缓存的实际应用
  3. 多文件处理与缓存策略

Gemini API的技术规格

根据官方文档,Gemini 1.5 Pro和Flash版本支持最多3600页的文档处理。文档必须是application/pdf MIME类型,每页文档相当于258个令牌。无论文档的像素多少,较大的页面会缩小到3072x3072像素,同时保持纵横比,而较小的页面会放大到768x768像素。这意味着无论页面大小如何,都可以进行处理,但较小页面的处理成本不会降低,除了带宽和性能改进方面的差异。

实际操作指南

在上传PDF文件之前,有几件事需要注意:应先将页面旋转到正确的方向,避免上传模糊的页面,如果使用单页文档,需将提示放在页面之后。Gemini API允许每个项目存储最多20GB的文件,每个文件最大2GB,文件会在48小时内存储,可在此期间通过API密钥访问,但无法通过API下载。

接下来,我们将展示如何使用Gemini API进行文档处理和上下文缓存。

开始使用Gemini API

首先需要安装Google生成AI包(google generative ai package),然后获取API密钥。以下是一些基本步骤:

  1. 上传PDF文件:使用upload file函数上传文件,提供文件名和显示名,并生成唯一的URI。
  2. 处理PDF文件:通过生成内容函数处理文件,传递生成的文件URI和提示。例如,可以让模型将文档总结为一个项目符号列表。

上下文缓存的应用

上下文缓存可以显著降低处理成本。在上传文件并生成URI后,你可以创建一个缓存并定义缓存的生存时间。例如,将文档缓存15分钟,并在之后的查询中使用该缓存内容。这不仅能减少成本,还能提高处理效率。

多文件处理

如果需要处理多个文件,可以创建多个缓存对象,然后在提示中引用这些缓存。这样可以在单次查询中处理多个文档,非常高效。

实验与测试

为了展示Gemini API的强大功能,我们进行了几个实验:

  1. 文档总结:让模型总结Gemini 1.5技术报告和一篇关于基于上下文学习重新思考对齐的论文。
  2. 图像解释:测试模型的多模态能力,例如解释Gemini 1.5技术报告中的图表。
  3. 多文件对比:比较两篇文档的论文陈述,并提供反驳意见。

通过这些实验,我们发现Gemini API在处理复杂文档和多模态数据方面表现出色,特别是在上下文缓存的支持下,能够以更低的成本和更高的效率完成任务。

未来展望

上下文缓存和提示缓存技术的引入,为我们提供了新的工具来处理和优化大规模数据处理任务。虽然这些新技术可能不会完全取代传统的RAG方法,但在特定场景下,它们提供了更为经济高效的解决方案。

在未来,我们预计会看到更多公司和开发者采用这些创新技术,以提升数据处理的效率和降低成本。对于那些对科技充满热情的普通用户来说,这些进展无疑是非常值得关注和期待的。

总的来说,Gemini API和Claude的上下文缓存和提示缓存技术展示了科技领域的无限可能性。通过不断创新,我们可以期望看到更多类似的突破,为我们的生活和工作带来更多便利和效率。

关注我,每天带你开发一个AI应用,每周二四六直播,欢迎多多交流。

image.png

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以得知prompt+RAG的流程如下: 1. 首先,使用Retriever部分在知识库中检索出top-k个匹配的文档zi。 2. 然后,将query和k个文档拼接起来作为QA的prompt,送入seq2seq模型。 3. seq2seq模型生成回复y。 4. 如果需要进行Re-rank,可以使用LLM来rerank,给LLM写好prompt即可。 下面是一个简单的示例代码,演示如何使用prompt+RAG: ```python from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration # 初始化tokenizer、retriever和seq2seq模型 tokenizer = RagTokenizer.from_pretrained('facebook/rag-token-base') retriever = RagRetriever.from_pretrained('facebook/rag-token-base', index_name='exact', use_dummy_dataset=True) model = RagSequenceForGeneration.from_pretrained('facebook/rag-token-base') # 设置query和context query = "What is the capital of France?" context = "France is a country located in Western Europe. Paris, the capital city of France, is known for its romantic ambiance and iconic landmarks such as the Eiffel Tower." # 使用Retriever部分检索top-k个匹配的文档 retrieved_docs = retriever(query) # 将query和k个文档拼接起来作为QA的prompt input_dict = tokenizer.prepare_seq2seq_batch(query, retrieved_docs[:2], return_tensors='pt') generated = model.generate(input_ids=input_dict['input_ids'], attention_mask=input_dict['attention_mask']) # 输出生成的回复 generated_text = tokenizer.batch_decode(generated, skip_special_tokens=True)[0] print(generated_text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值