RAG优化技巧|7大挑战与解決方式|提高你的LLM能力

LLM Agent之再谈RAG的召回多样性优化 在微软提出的rewrite-retrieve-read框架中,使用大模型作为rewriter,Bing搜索作为Retriever,chatgpt作为Reader,在QA任务上,尝试使用PPO微调改写模型,Reward模型的目标是不同改写query召回后推理内容和真实答案的Exact Match和F1。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。传统搜索Query的扩展,有基于用户搜索日志挖掘的相似Query,有基于相同召回文档关联的相似Query,也有基于SMT的Query改写方案。 阅读详情

在当今快速发展的人工智能领域,大型语言模型(LLM)已经成为无处不在的技术,它们不仅改变了我们与机器交流的方式,还在各行各业中发挥着革命性的影响。

然而,尽管LLM + RAG的能力已经让人惊叹,但我们在使用RAG优化LLM的过程中,还是会遇到许多挑战和困难,包括但不限于检索器返回不准确或不相关的数据,并且基于错误或过时信息生成答案。因此本文旨在提出RAG常见的7大挑战,并附带各自相应的优化方案,期望能够帮助我们改善RAG。

下图展示了RAG系统的两个主要流程:检索和查询;红色方框代表可能会遇到的挑战点,主要有7项:

  1. Missing Content: 缺失內容
  2. Missed Top Ranked: 错误排序內容,导致正确答案沒有被成功 Retrieve
  3. Not in Context: 上限文限制,导致正确答案沒有被采用
  4. Wrong Format: 格式错误
  5. Incomplete: 回答不全面
  6. Not Extracted: 未能检索信息
  7. Incorrect Specificity: 不合适的详细回答

img

这些挑战不仅关系到系统的可用性和准确性,还直接影响到用户对技术的信任度。为了解决这些问题,以下是针对每个挑战的优化方案:

缺失内容(Missing Content)

当 RAG 系统面对的问题无法从现有文件中得到答案时,就会出现这种情况。在最佳情况下,我们希望 RAG 系统直接回答「我不知道」。然而,实际上RAG 系统常常会编造或错误回答问题。

针对这个问题,目前有两大解决策略:

1. 数据清理

俗话说"吃什么、吐什么"。原始数据质量对信息处理系统的准确性至关重要,若输入数据错误或矛盾,或者预处理步骤不当,则无论检索增强生成(RAG)系统有多先进,也无法从混乱数据中提取有价值信息。这意味着我们必须在数据源选择、数据清洗、预处理等环节投入资源和技术,以确保输入数据尽可能准确和一致。这个策略不仅适用于本文讨论的问题,也适用于所有数据处理流程中,数据质量始终是关键。

2. prompt 工程

在知识库缺乏相关信息、导致系统可能给出看似合理但实际上错误答案的情况下,使用提示工程是一个非常有帮助的解决方式。例如通过设定提示:“如果你对答案不确定,就直接告诉我你不知道”,如此可以鼓励模型采取更谨慎和诚实的回应态度,从而避免误导用户。虽然不能保证系统回答的绝对准确性,但通过这样的提示, 确实能提高回答品质。

未命中排名靠前的内容(Missed Top Ranked)

这个挑战主要在于“答案在文件中,但由于排名靠前而未能提供给用户”。理论上,检索系统会为每个文档分配一个排名,此排名将决定其在后续处理中的使用程度。然而,在实际操作中,受限于性能和资源,通常只有排名最高的前 K 个文档会被选取并展示给用户。这里的 K 是基于性能考虑的参数。

针对该问题,存在两种解决方式:

1. 调整参数以优化搜索效果

该部分提出了两个方面调整以增加 RAG 效率和准确性:chunk_size

如果要直接在 langchain 调整块大小,请使用以下代码:

python
复制代码
 from langchain.text_splitter import RecursiveCharacterTextSplitter
 ​
 text_splitter = RecursiveCharacterTextSplitter(chunk_size=100)
 all_splits = text_splitter.split_documents(PDF_data)

k 值涉及到检索器应该返回多少个答案,我们可以选择返回更多的答案,以确保正确答案不会被 LLM 忽略:

python
复制代码
 retriever = vectordb.as_retriever(search_kwargs={"k": 8})
 ​
 qa = RetrievalQA.from_chain_type(
     llm=llm, 
     chain_type="stuff", 
     retriever=retriever, 
     verbose=True
 )

2. 优化检索文档的排序

在将检索到的文件送到LLM前,先对文件进行最佳化排序,能大幅提升RAG系统的效能,因为初始排序无法反映件与查询的真实相关性。这系列的论文可以看Liu et al.2023,论文中指出,将最相似的文档放在开头或结尾时,效能通常最高,因为模型容易迷失在中间。

在langchain中,我们可以使用langchain原生的Long-Context Reorder或Cohere Reranker来实现,请参考官方文件。

2.1 Long-Context Reorder

python
复制代码
 retriever = vectordb.as_retriever(search_kwargs={"k": 8})
 query = "What can you tell me about the Celtics?"
 ​
 # 按相关度分数排序获取相关文档
 docs = retriever.get_relevant_documents(query)
 ​
 # 重新排序文件:
 # 列表中不太相关的文件将排在中间位置。开始/结尾处的相关要素。
 reordering = LongContextReorder()
 reordered_docs = reordering.transform_documents(docs)
 ​
 # 确认前后共有4份相关文件。
 print(reordered_docs)

2.2 Cohere Reranker

python
复制代码
 from langchain.retrievers import ContextualCompressionRetriever
 from langchain.retrievers.document_compressors import CohereRerank
 from langchain_community.llms import Cohere
 ​
 retriever = vectordb.as_retriever(search_kwargs={"k": 8})
 query = "What can you tell me about the Celtics?"
 ​
 # 按相关性得分排序以获取相关文件
 docs = retriever.get_relevant_documents(query)
 ​
 # 使用Cohere重新排名端点来对返回的结果进行重新排名
 llm = Cohere(temperature=0)
 compressor = CohereRerank()
 compression_retriever = ContextualCompressionRetriever(
     base_compressor=compressor, base_retriever=retriever
 )
 ​
 compressed_docs = compression_retriever.get_relevant_documents(
     "What did the president say about Ketanji Jackson Brown"
 )
 pretty_print_docs(compressed_docs)

Not in Context(上下文限制)

论文有提到:「答案所在的文档虽从数据库中检索出来,但并未包含在生成答案的上下文中。」这种情况通常发生在返回的文档太多,需透过一个整合过程来提取答案的情境。 为了解决这个问题,扩大上下文的处理范围是一种方式,此外也建议可以尝试以下方法:

1.调整检索策略

Langchain中提供许多检索的方法,确保我们在RAG中能拿到最符合问题的文件,详细的列表可以参考官网,其中包含:

  1. Vectorstore
  2. ParentDocument
  3. Multi Vector
  4. Self Query
  5. Contextual Compression
  6. Time-Weighted Vectorstore
  7. Multi-Query Retriever
  8. Ensemble
  9. Long-Context Reorder

这些策略为我们提供了一种灵活多样的方式,能够根据不同的检索需求和应用场景进行调整,以此提升检索过程中的准确性和效率。

2. 微调 embedding

Fine-tuning 嵌入模型针对特定任务是提高检索准确性的有效方法。如果我们的 embedding model 是开源的,可以使用 LlamaIndex 功能进行实现。与 Langchian 相比,LlamaIndex 是为了检索数据而优化的软件包,在这方面提供了详细教程,而 Langchian 则没有相应功能。

以下示范如何设置微调框架、执行微调操作并获取经过微调的模型,也可参考官方文档。

python
复制代码
 finetune_engine = SentenceTransformersFinetuneEngine(
     train_dataset,
     model_id="BAAI/bge-small-en",
     model_output_path="test_model",
     val_dataset=val_dataset,
 )
 ​
 finetune_engine.finetune()
 ​
 embed_model = finetune_engine.get_finetuned_model()

格式错误

当我们使用prompt要求LLM以特定格式(如表格或列表)提取信息,但却被LLM忽略时,可以尝试以下3种解决策略:

1. 改进prompt

我们可以采用以下策略来改进 prompt,解决这个问题:

A.明确说明指令

B.简化请求并使用关键字

C.提供示例

D.采用迭代提示,提出后续问题

2. 输出解析器

输出解析器负责获取LLM的输出,并将其转换为更合适的格式,因此当我们希望使用LLM生成任何形式的结构化数据时,这非常有用。它主要在以下方面帮助确保获得期望的输出:

A. 为任何提示/查询提供格式化指令

B. 对大语言模型的输出进行 解析 。

Langchain提供了许多不同类型Output Parsers的流接口,以下是示范代码,具体细节请参阅官方文档。

python
复制代码
 from langchain.output_parsers import PydanticOutputParser
 from langchain.prompts import PromptTemplate
 from langchain_core.pydantic_v1 import BaseModel, Field, validator
 from langchain_openai import OpenAI
 ​
 model = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=0.0)
 ​
 ​
 # 定义您想要的数据结构。
 class Joke(BaseModel):
     setup: str = Field(description="question to set up a joke")
     punchline: str = Field(description="answer to resolve the joke")
 ​
     # 可以通过 Pydantic 轻松添加自定义验证逻辑。
     @validator("setup")
     def question_ends_with_question_mark(cls, field):
         if field[-1] != "?":
             raise ValueError("Badly formed question!")
         return field
 ​
 ​
 # 设置一个解析器 + 将指令注入到提示模板中。
 parser = PydanticOutputParser(pydantic_object=Joke)
 ​
 prompt = PromptTemplate(
     template="Answer the user query.\n{format_instructions}\n{query}\n",
     input_variables=["query"],
     partial_variables={"format_instructions": parser.get_format_instructions()},
 )
 ​
 # And a query intended to prompt a language model to populate the data structure.
 prompt_and_model = prompt | model
 output = prompt_and_model.invoke({"query": "Tell me a joke."})
 parser.invoke(output)

3. Pydantic parser

Pydantic 是一个多功能框架,它能够将输入的文本字符串转化为结构化的Pydantic物件。Langchain有提供此功能,归类在Output Parsers中,以下是示范code,可以参考官方文件。

python
复制代码
 from typing import List
 ​
 from langchain.output_parsers import PydanticOutputParser
 from langchain.prompts import PromptTemplate
 from langchain_core.pydantic_v1 import BaseModel, Field, validator
 from langchain_openai import ChatOpenAI
 ​
 model = ChatOpenAI(temperature=0)
 ​
 # 定义你期望的数据结构。
 class Joke(BaseModel):
     setup: str = Field(description="question to set up a joke")
     punchline: str = Field(description="answer to resolve the joke")
 ​
     # 可以很容易地使用 Pydantic 添加自定义验证逻辑。
     @validator("setup")
     def question_ends_with_question_mark(cls, field):
         if field[-1] != "?":
             raise ValueError("Badly formed question!")
         return field
 ​
 ​
 # 一个用来促使语言模型填充数据结构的查询意图。
 joke_query = "Tell me a joke."
 ​
 # 设置一个解析器+将指令注入到提示模板中。
 parser = PydanticOutputParser(pydantic_object=Joke)
 ​
 prompt = PromptTemplate(
     template="Answer the user query.\n{format_instructions}\n{query}\n",
     input_variables=["query"],
     partial_variables={"format_instructions": parser.get_format_instructions()},
 )
 ​
 chain = prompt | model | parser
 ​
 chain.invoke({"query": joke_query})

回答不完整

有时候 LLM 的回答并不完全错误,但会遗漏了一些细节。这些细节虽然在上下文中有所体现,但并未被充分呈现出来。例如,如果有人询问“文档A、B和C主要讨论了哪些方面?”对于每个文档分别提问可能会更加适合,这样可以确保获得更详细的答案。

查询转换

提高 RAG 系统效能的一个策略是添加一层查询理解层,也就是在实际进行检索前,先进行一系列的 Query Rewriting。具体而言,我们可以采用以下四种转换方法:

1.1 路由:在不改变原始查询的基础上,识别并导向相关的工具子集,并将这些工具确定为处理该查询的首选。

1.2 查询重写:在保留选定工具的同时,通过多种方式重构查询语句,以便跨相同的工具集进行应用。

1.3 子问题:将原查询拆解为若干个更小的问题,每个问题都针对特定的工具进程定向,这些工具是根据它们的元数据来选择。

1.4 ReAct 代理选择器:根据原始查询判断最适用的工作,并为在该工作上运行而特别构造了查询。

Llamaindex已经为这个问题整理出了一系列方便操作的功能,请查看官方文件;而Langchain的大部分功能则散落在Templates中,例如HyDE的实现和论文内容。以下是使用Langchain进行HyDE的示例:

python
复制代码
 from langchain.llms import OpenAI
 from langchain.embeddings import OpenAIEmbeddings
 from langchain.chains import LLMChain, HypotheticalDocumentEmbedder
 from langchain.prompts import PromptTemplate
 ​
 base_embeddings = OpenAIEmbeddings()
 llm = OpenAI()
 ​
 # Load with `web_search` prompt
 embeddings = HypotheticalDocumentEmbedder.from_llm(llm, base_embeddings, "web_search")
 ​
 # 现在我们可以将其用作任何嵌入类!
 result = embeddings.embed_query("Where is the Taj Mahal?")

Not Extracted(未能检索信息)

当RAG系统面对众多信息时,往往难以准确提取出所需的答案,关键信息的遗漏降低了回答的质量。研究显示,这种情况通常发生在上下文中存在过多干扰或矛盾信息时。 以下是针对这一问题提出的三种解决策略:

1. 数据清洗

数据的质量直接影响到检索的效果,这个痛点再次突显了优质数据的重要性。在责备你的 RAG 系统之前,请确保你已经投入足够的精力去清洗数据。

2. 信息压缩

提示信息压缩技术在长上下文场景下,首次由 LongLLMLingua 研究项目提出,并已在 LlamaIndex 中得到应用,相对 Langchain 的资源则较零散。现在,我们可以将 LongLLMLingua 作为节点后处理器来实施,这一步会在检索后对上下文进行压缩,然后再送入 LLM 处理。

img

以下是在 LlamaIndex 中使用 LongLLMLingua 的示范,其他细节可以参考官方文件:

python
复制代码
 from llama_index.query_engine import RetrieverQueryEngine
 from llama_index.response_synthesizers import CompactAndRefine
 from llama_index.postprocessor import LongLLMLinguaPostprocessor
 from llama_index.schema import QueryBundle
 ​
 node_postprocessor = LongLLMLinguaPostprocessor(
     instruction_str="Given the context, please answer the final question",
     target_token=300,
     rank_method="longllmlingua",
     additional_compress_kwargs={
         "condition_compare": True,
         "condition_in_question": "after",
         "context_budget": "+100",
         "reorder_context": "sort",  # enable document reorder
     },
 )
 ​
 retrieved_nodes = retriever.retrieve(query_str)
 synthesizer = CompactAndRefine()
 ​
 ## 梳理 RetrieverQueryEngine 中的步骤,以确保清晰易懂。
 ## 后处理(压缩),合成
 new_retrieved_nodes = node_postprocessor.postprocess_nodes(
     retrieved_nodes, query_bundle=QueryBundle(query_str=query_str)
 )
 ​
 print("\n\n".join([n.get_content() for n in new_retrieved_nodes]))
 ​
 response = synthesizer.synthesize(query_str, new_retrieved_nodes)

3. LongContextReorder

这在第二个挑战,Missed Top Ranked中有提到,为了解决LLM在文件中间会有「迷失」的问题,它通过重新排序检索到的节点来优化处理,特别适用于需要处理大量顶级结果的情形。细节示范可以参考上面的内容。

不正确的具体性(Incorrect Specificity)

有时,LLM 的回答可能不够详细或具体,用户可能需要进行多次追问才能得到清晰的解答。这些答案可能过于笼统,无法有效满足用户的实际需求。

因此,我们需要采取更高级的检索策略来寻找解决方案。

当我们发现回答缺乏期望的详细程度时,通过优化检索策略可以显著提升信息获取的准确性。LlamaIndex 提供了许多高级检索技巧,而Langchain 在这方面资源较少。以下是一些在 LlamaIndex 中能够有效缓解此类问题的高级检索技巧:

总结

本文探讨了使用 RAG 技术时可能面临的七大挑战,并针对每个挑战提出了具体的优化方案,以提升系统准确性和用户体验。

  • 缺失内容:解决方案包括数据清理和提示工程,确保输入数据的质量并引导模型更准确地回答问题。
  • 未识别出的最高排名:可通过调整检索参数和优化文件排序来解决,以确保向用户呈现最相关的信息。
  • 背景不足:扩大处理范围和调整检索策略至关重要,以包含更广泛的相关信息。
  • 格式错误:可以通过改进提示、使用输出解析器和 Pydantic 解析器实现,有助于按照用户期望的格式获取信息。
  • 不完整部分:可通过查询转换来解决,确保全面理解问题并作出回应。
  • 未提取部分:数据清洗、消息压缩和 LongContextReorder 是有效的解决策略。
  • 特定性不正确:可以通过更精细化的检索策略如 Auto Merging Retriever、元数据替换等技巧来解决问题,并进一步提高信息查找精度。

通过对 RAG 系统挑战的深入分析和优化,我们不仅可以提升LLM的准确性和可靠性,还能大幅提高用户对技术的信任度和满意度。

希望这篇能帮助我们改善我们的 RAG 系统。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容:
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容:
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容:
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容:
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

在这里插入图片描述

改进召回(Retrieval)和引入重排(Reranking)提升RAG架构下的LLM应用效果 RAG架构来自于实际问题,而很多问题都是相似的,在效果优化层面,我们可以借鉴一些推荐系统等传统AI系统的优化经验,将其迁移过来,这对于改进RAG效果有很大的帮助,在后面的文章里,还将继续介绍具体场景的一些使用问题,欢迎关注。 阅读详情

相关推荐

专业级语义搜索优化:利用Cohere AI、BGE Re-Ranker及Jina Reranker实现精准结果重排

专业级语义搜索优化:利用Cohere AI、BGE Re-Ranker及Jina Reranker实现精准结果重排

丨汀、的博客 1571

Langchain:Prompt在手,天下我有

Prompts是大语言模型的输入,他是基于大语言模型应用的利器。没有差的大语言模型,只有差的prompts。

DEVELOPERAA的博客 633

LLM - 模型参数设置

调整这些设置对于提高响应的可靠性非常重要,你可能需要进行一些实验才能找出适合您的用例的正确设置。越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚 来减少响应中单词的重复。:是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中出现的次数成比例。在我们开始一些基础示例之前,请记住最终生成的结果可能会和使用的大语言模型的版本而异。如果您希望模型生成多样化或创造性的文本,您可以设置更高的。,如果您希望模型生成更专注的内容,您可以设置更低的。

AI工程化、开源分享、文档翻译、代码笔记 1268

基于大模型LLM + LangChain的知识库检索优化探究

本文讨论了基于LLM+Langchain搭建的知识库系统的检索准确度优化的可能点

qq_51495214的博客 8066

全网最全医学图像数据汇总

本仓库汇总了多个领域的医学图像开源数据集,涵盖CT、MRI、超声、内窥镜、病理、多模态、PET、OCT以及皮肤镜等多种成像技术。每个数据集均详细列出了任务类型、部位、格式、数量及下载链接,旨在为医学图像研究者提供便捷的资源导航。⚠️:这些数据集仅适用于学术研究用途。

2401_83173765的博客 3319

安防相机宽动态(WDR)技术解析:从原理到实战应用

本文深入解析安防相机宽动态(WDR)技术原理,对比多次曝光与DOL-WDR等实现方式,并区分硬件WDR与数字WDR(DWDR)的本质差异。文章重点阐述了WDR在逆光出入口、夜间道路监控等五大典型场景的实战应用与调参技巧,旨在帮助用户根据实际需求正确选择与配置,确保监控系统在复杂光线下清晰成像。

weixin_29191081的博客 428

RAG优化技巧|7大挑战与解決方式|提高你的LLM能力_rag 回答问题不完整

本文探讨了使用RAG技术时可能面临的七大挑战,并针对每个挑战提出了具体的优化方案,以提升系统准确性和用户体验。缺失内容:解决方案包括数据清理和提示工程,确保输入数据的质量并引导模型更准确地回答问题。未识别出的最高排名:可通过调整检索参数和优化文件排序来解决,以确保向用户呈现最相关的信息。背景不足:扩大处理范围和调整检索策略至关重要,以包含更广泛的相关信息。格式错误:可以通过改进提示、使用输出解析器和Pydantic解析器实现,有助于按照用户期望的格式获取信息。

2401_85378759的博客 1343

TouchSocket TcpService:构建高性能Tcp服务的终极利器

/ 接收到的数据data");// 回复客户端await ((ITcpSessionClient)client).SendAsync("服务端已收到消息!");// 继续执行后续插件TouchSocket的TCPService以极简的API、强大的扩展性和卓越的性能,重新定义了.NET TCP服务的开发体验。无论是物联网平台还是金融级实时通信系统,TCPService均能提供可靠的基础设施支持。立即探索示例项目,开启你的高性能服务开发之旅!扩展阅读如何实现WebSocket服务?

若汝棋茗 的博客 1461

RAG优化技巧|7大挑战与解決方式|提高你的LLM能力(附教程)

在当今快速发展的人工智能领域,大型语言模型(LLM)已经成为无处不在的技术,它们不仅改变了我们与机器交流的方式,还在各行各业中发挥着革命性的影响。

pythonhy的博客 882

告别配置迷茫:手把手教你用Vivado 2023.1配置Xilinx FPGA的DDR4 MIG IP核(含AXI接口详解)

本文详细介绍了如何在Vivado 2023.1中配置Xilinx FPGA的DDR4 MIG IP核,包括AXI接口的深度解析与优化。通过实战案例和调试技巧,帮助工程师快速掌握DDR4内存与FPGA的协同工作,提升系统性能。特别适合需要高性能计算和实时信号处理的开发者。

weixin_29231725的博客 437

Python进行.tif格式数据波段组合;多波段tif数据波段分离

Python进行.tif格式数据波段组合;多波段tif数据波段分离.tif格式数据波段组合多波段.tif数据波段分离 阔别已久,我又来了;啊啊啊…… 读了研究生,忙到天昏地暗(哈哈哈,这都是借口,主要是花了一定时间适应研究生生活) 这方面的内容我也主要是应用在遥感领域,我们知道在遥感应用中,大多数的图像数据格式为.tif格式的。进行波段组合使用ArcGIS里面的Composite Bands工具是可以实现的,波段分离也可以使用一些工具或巧妙的方法分开。但当你使用Python程序的话,就可以简化这个软件点击和

qq_44353170的博客 1万+

RAG优化技巧|7大挑战与解決方式|提高你的LLM

本文探讨了使用RAG技术时可能面临的七大挑战,并针对每个挑战提出了具体的优化方案,以提升系统准确性和用户体验。缺失内容:解决方案包括数据清理和提示工程,确保输入数据的质量并引导模型更准确地回答问题。未识别出的最高排名:可通过调整检索参数和优化文件排序来解决,以确保向用户呈现最相关的信息。背景不足:扩大处理范围和调整检索策略至关重要,以包含更广泛的相关信息。格式错误:可以通过改进提示、使用输出解析器和Pydantic解析器实现,有助于按照用户期望的格式获取信息。

python12222_的博客 1694

AI应用架构师收藏:大规模AI系统AIOps智能运维的4个落地案例

本文精选互联网、金融、制造、电信四大行业的大规模AI系统AIOps落地案例,覆盖云原生AI平台、风控AI系统、工业AI质检、5G网络AI优化等典型场景。行业背景与系统规模:业务目标、AI系统架构、运维挑战;AIOps解决方案设计:数据采集层→分析层→决策层的全栈架构,技术栈选型与理由;核心技术实现细节:异常检测算法、根因分析模型、自动化恢复流程(含Python代码示例);实施效果与经验总结:关键指标对比、踩坑教训、架构师视角的最佳实践。

AI天才研究院 854

RAG优化技巧 | 7大挑战与解決方式 | 提高你的LLM: 下篇

本文探讨了使用RAG技术时可能面临的七大挑战,并针对每个挑战提出了具体的优化方案,以提升系统准确性和用户体验。• 缺失内容:解决方案包括数据清理和提示工程,确保输入数据的质量并引导模型更准确地回答问题。• 未识别出的最高排名:可通过调整检索参数和优化文件排序来解决,以确保向用户呈现最相关的信息。• 背景不足:扩大处理范围和调整检索策略至关重要,以包含更广泛的相关信息。• 格式错误:可以通过改进提示、使用输出解析器和Pydantic解析器实现,有助于按照用户期望的格式获取信息。

2401_84205765的博客 1460

组态王的日历时间控件脚本

日期时间控件中的脚本中在小于10的月份和天数前必须要加上0,这是由首字符对比机制规定的,首字母相同,就不再不做对比了,比如1和11,是一样的。首字母不同,再比较下一位。 float Ayear1; float Amonth1; float Aday1; string temp1; Ayear1=sd.Year; Amonth1=sd.Month; Aday1=sd.Day; temp1=StrFromInt( Ayear1, 10 ); if(Amonth1<10) temp1=temp1+"-0"+

逍遥子的博客 5717

浅谈innovus Update io latency相关作用

同样我们使用update io latency,工具取launch clock latency负值反标到clock端口上,同时认为capture clock latency与launch clock latency相等,这样可以相互抵消,这样setup time slack = T – Tsetup -Tcomb – Toutput_delay,因此采用update io latency后,reg2out timing path的setup check变得真实些。图3 in2reg示意图。

芯冰乐 475

RAG优化技巧 | 7大挑战与解決方式 | 提高你的LLM :上篇

在当今快速发展的人工智能领域,大型语言模型(LLM)已经成为无处不在的技术,它们不仅改变了我们与机器交流的方式,还在各行各业中发挥着革命性的影响。然而,尽管LLM + RAG的能力已经让人惊叹,但我们在使用RAG优化LLM的过程中,还是会遇到许多挑战和困难,包括但不限于检索器返回不准确或不相关的数据,并且基于错误或过时信息生成答案。因此本文旨在提出RAG常见的7大挑战,并附带各自相应的优化方案,期望能够帮助我们改善RAG。下图展示了RAG系统的两个主要流程:检索和查询;

python12345678_的博客 1158

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

解锁RAG优化秘诀:征服7大挑战,全面提升你的LLM模型性能

本文探讨了使用RAG技术时可能面临的七大挑战,并针对每个挑战提出了具体的优化方案,以提升系统准确性和用户体验。缺失内容:解决方案包括数据清理和提示工程,确保输入数据的质量并引导模型更准确地回答问题。未识别出的最高排名:可通过调整检索参数和优化文件排序来解决,以确保向用户呈现最相关的信息。背景不足:扩大处理范围和调整检索策略至关重要,以包含更广泛的相关信息。格式错误:可以通过改进提示、使用输出解析器和Pydantic解析器实现,有助于按照用户期望的格式获取信息。

m0_63171455的博客 1448

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

长文本LLM在RAG中的挑战和优化

这种行为归因于两个因素的相互作用,这两个因素随着检索集的增大而变得越来越重要:(1)放大的"lost-in-the-middle"现象,其中LLM优先考虑输入序列开头和结尾的信息,以及(2) hard negatives的增加,这可能会阻碍准确的答案生成。(1)不相关段落的影响:检索召回率和RAG准确率之间的差异强调了不相关的检索段落的不利影响((“hard negatives”)。(2)检索器相似性和泛化:用特定检索器微调的LLM的泛化能力受到训练检索器和推理检索器之间的相似性的影响。

weixin_45883286的博客 947

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 【AutoGPT系列】快速上手 - 运行原生AutoGPT or 利用AutoGPT框架开发自己的Agent
下一篇: OpenAI重磅发布 GPT-4o!向免费客户开放,GPT-4o官方使用指南分享
Llama-Turbo
博客等级 码龄4年 9901粉丝 2022原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值