RAG实际测给你看

OpenViking上下文数据库Golang集成实践 技术创新文件系统范式:将AI Agent的上下文管理从扁平向量存储提升为结构化文件系统分层检索策略:L0/L1/L2三层加载机制,减少62.1%的Token消耗记忆自迭代:会话提交触发Agent经验沉淀,实现越用越智能工程实践完整Golang实现:提供生产级可用的OpenViking客户端库企业级集成方案:涵盖文档摄入、检索、会话管理等全流程性能优化成果:检索准确率提升24.1%,响应时间减少53.3%可观测性提升可视化检索轨迹:实现检索过程的白盒化,调试效率提升77.1%全面监控指标。 阅读详情

01闭环五步,全景一览

先看完整链路,再逐步拆:

图1:评测闭环五步流程图

Step吃什么(输入)吐什么(输出)Ragas扮演什么角色
1文档目录Document列表无(LangChain加载)
2Document列表KnowledgeGraph(节点+实体+关系)切卡片 → 划重点(NER)→ 拉红线(Jaccard)
3KG + Synthesizer + 数量testset.json(问题+参考答案+题型标签)TestsetGenerator + 3种QuerySynthesizer
4testset中的问题每条的response + retrieved_contexts无(你的RAG系统)
5(question, response, contexts, reference)6指标×N条的得分矩阵6个Metric scorer

下面逐步展开。

· · ·

02Step 1:文档加载

最简单的一步,但它的输出格式决定后面所有环节怎么跑。

输入:一个文件夹,里面放 .md/ .txt/ .pdf文档。

输出:一个 Document列表。每个Document两部分——正文(page_content)和来源信息(metadata)。

from langchain_community.document_loaders import DirectoryLoader, TextLoader
loader = DirectoryLoader("./my_docs", glob="**/*.md", loader_cls=TextLoader)
documents = loader.load()
# [Document(page_content="爱因斯坦的相对论...", metadata={"source": "physics.md"}), ...]

这步没Ragas什么事。但输出要存盘——后面可能换不同参数重建知识图谱,不想每次都重新扫文件夹。

· · ·

03Step 2:建证据墙(知识图谱)

这是上一篇讲的"证据墙"在代码层面的落地。回忆一下:切卡片→划重点→拉红线。在Ragas里,这三步对应三个组件:

证据墙的步骤Ragas组件做了什么
切卡片DocumentSplitter把Document切成chunk,每个chunk是图上的一个Node
划重点NERExtractor / KeyphraseExtractor从每个Node提取实体、关键词,挂到Node的properties上
拉红线JaccardSimilarityBuilder两个Node共享实体?拉一条边连起来

输入:Document列表

输出:KnowledgeGraph对象——节点(文档chunk)+ 边(实体关系)

在代码里,你不需要手动分别调这三步。TestsetGenerator.generate_with_langchain_docs内部会自动走完整个建图流程:

from ragas.testset import TestsetGenerator
from ragas.llms import llm_factory
from ragas.embeddings.base import embedding_factory
from openai import AsyncOpenAI
# 所有模型调用统一走OpenAI协议
client = AsyncOpenAI(base_url="http://your-api/v1", api_key="sk-xxx")
llm = llm_factory("gpt-4o-mini", client=client)
embeddings = embedding_factory("openai", model="text-embedding-3-small", client=client)
generator = TestsetGenerator(llm=llm, embedding_model=embeddings)

调 generate_with_langchain_docs时,Ragas先建图再出题,是一体完成的。但有个问题:**建图非常贵。**一批文档几十上百个chunk,每个都要调LLM做NER提实体,再两两算Jaccard相似度建边。跑一次可能几分钟+几千次LLM调用。

所以实践中必须把KG持久化。建好一次,存成pickle文件,后面换分布重新出题、或者换RAG系统重新评测,都直接加载这个pkl,不重复花钱。

· · ·

04Step 3:批量造题

知识图谱建好了,接下来从图上"长出"测试题。这对应上一篇讲的"换不同证人来问"——同一张证据墙,按不同题型策略遍历节点,生成不同难度的问题。

输入:KnowledgeGraph + QuerySynthesizer列表 + 生成数量

输出:testset.json,每条样本包含四个字段:

{
"user_input": "停在仓库门口的车主,和谁有过法律纠纷?",
"reference": "李强曾因合同纠纷起诉仓库老板张伟。",
"reference_contexts": ["监控录像显示...", "报案记录显示..."],
"query_type": "multi_hop_specific"
}

Ragas里有三种现成的QuerySynthesizer,对应三种出题策略:

from ragas.testset.synthesizers import (
SingleHopSpecificQuerySynthesizer,   # 单张卡片出事实题
MultiHopSpecificQuerySynthesizer,    # 多张卡片出事实题
MultiHopAbstractQuerySynthesizer,    # 多张卡片出推理题
)

它们的区别在于怎么从图上选节点:

Synthesizer选节点方式对应上一篇的
SingleHopSpecificQuerySynthesizer取单个Node单跳+具体(最简单,一张卡片一句话能答)
MultiHopSpecificQuerySynthesizer取一条边连接的两个Node多跳+具体(得关联两张卡片)
MultiHopAbstractQuerySynthesizer取一条边连接的两个Node多跳+抽象(关联+推理,最难)

调用时通过 query_distribution参数控制比例。这个参数的类型是 List[Tuple[Synthesizer, float]]——一个synthesizer配一个权重:

query_distribution = [
(SingleHopSpecificQuerySynthesizer(llm=llm), 0.35),
(MultiHopSpecificQuerySynthesizer(llm=llm), 0.35),
(MultiHopAbstractQuerySynthesizer(llm=llm), 0.30),
]
testset = generator.generate_with_langchain_docs(
documents=documents,
testset_size=20,
query_distribution=query_distribution,
)

testset.samples就是生成的样本列表。每个sample有 user_input(问题)、reference(参考答案)、reference_contexts(出处原文)。

怎么给每条题打上类型标签

上面的调用方式有个问题——Ragas不会告诉你哪条样本是哪个Synthesizer生成的。解决办法是分批生成,每次只传一种Synthesizer:

QUERY_TYPE_MAP = {
"single_hop_specific": SingleHopSpecificQuerySynthesizer,
"multi_hop_specific": MultiHopSpecificQuerySynthesizer,
"multi_hop_abstract": MultiHopAbstractQuerySynthesizer,
}
all_samples = []
for query_type, synth_cls in QUERY_TYPE_MAP.items():
synthesizer = synth_cls(llm=llm)
testset = generator.generate_with_langchain_docs(
documents=documents,
testset_size=type_size,
query_distribution=[(synthesizer, 1.0)],  # 一次只用一种
)
for sample in testset.samples:
all_samples.append({
"user_input": sample.user_input,
"reference": sample.reference,
"reference_contexts": sample.reference_contexts,
"query_type": query_type,  # 打标签
})

这样每条测试题都带了 query_type标签,后面评分时就能按题型分组统计。

这是整条流水线最值钱的中间产物

testset.json生成一次,可以拿去测N个不同的RAG系统——切片策略不同、Embedding模型不同、检索参数不同、甚至完全不同的技术栈——让它们在同一组考题上打分,对比才有意义。

· · ·

05Step 4:RAG系统答题

有了考卷,接下来让"考生"上场答题。

输入:testset.json里的每一条 user_input

输出:每条问题对应两样东西——

  • response

    :RAG系统给出的答案文本

  • retrieved_contexts

    :RAG系统检索到的原文片段列表

这一步和Ragas无关——它完全取决于你的RAG系统长什么样。你的系统可能是Qdrant+OpenAI,可能是Elasticsearch+Qwen,可能是一个现成的平台API。

为了让评测工具不绑定特定实现,我们定义了一个抽象接口:

class RAGInterface(ABC):
@abstractmethod
async def query(self, question: str, top_k: int = 5) -> RAGResponse:
...
@dataclass
class RAGResponse:
answer: str                    # LLM生成的回答
retrieved_contexts: list[str]  # 检索到的原文片段

不管你的RAG系统底层用什么,只要能实现这个接口——给一个问题,返回答案和检索上下文——就能接入评测。配套项目里实现了一个 QdrantRAGInterface(向量搜索Qdrant + LLM生成答案),作为参考实现。

· · ·

06Step 5:6指标打分

现在手里有了每条问题的完整四元组:

用Ragas的6个Metric逐一打分。回忆第一篇讲的:前三个评检索,中间两个评生成,最后一个评抗压。

输入:四元组

输出:6个分数

Ragas评分统一模式

所有指标的调用方式一致:初始化scorer → 调 .ascore()传入所需字段 → 拿 result.value:

from ragas.llms import llm_factory
from ragas.embeddings.base import embedding_factory
from ragas.metrics.collections import (
Faithfulness, AnswerRelevancy, ContextPrecision,
ContextRecall, ContextEntityRecall, NoiseSensitivity,
)
client = AsyncOpenAI(base_url="http://your-api/v1", api_key="sk-xxx")
llm = llm_factory("gpt-4o-mini", client=client)
embeddings = embedding_factory("openai", model="text-embedding-3-small", client=client)

每个指标吃什么字段

这里是关键——不是每个指标都需要四元组的全部字段。哪个指标需要什么,严格对应它考察的维度:

检索环节的三个指标:

# 上下文精确率:检索到的内容,相关的排前面了吗?
# 需要:question + reference + contexts
scorer = ContextPrecision(llm=llm)
result = await scorer.ascore(
user_input=question,
reference=reference,         # 拿标准答案判断哪个context是相关的
retrieved_contexts=contexts,
)
# 上下文召回率:标准答案里的信息点,检索都覆盖了吗?
# 需要:question + reference + contexts
scorer = ContextRecall(llm=llm)
result = await scorer.ascore(
user_input=question,
retrieved_contexts=contexts,
reference=reference,         # 把reference拆成claim,逐条检查context能否支撑
)
# 上下文实体召回:关键实体漏没漏?
# 需要:reference + contexts
scorer = ContextEntityRecall(llm=llm)
result = await scorer.ascore(
reference=reference,         # 从reference提取实体集合
retrieved_contexts=contexts, # 从contexts提取实体集合,算交集比例
)

生成环节的两个指标:

# 忠实度:回答有没有瞎编?
# 需要:question + response + contexts(不需要reference!)
scorer = Faithfulness(llm=llm)
result = await scorer.ascore(
user_input=question,
response=response,           # 把response拆成claim
retrieved_contexts=contexts, # 逐条检查claim能否被context支撑
)
# 回答相关性:回答跑题了吗?
# 需要:question + response(只比对意图,不需要context也不需要reference)
scorer = AnswerRelevancy(llm=llm, embeddings=embeddings)
result = await scorer.ascore(
user_input=question,
response=response,           # 从response反推问题,算和原问题的相似度
)

抗压测试:

# 噪声敏感度:被无关内容带偏了吗?(越低越好)
# 需要:全部四元组
scorer = NoiseSensitivity(llm=llm)
result = await scorer.ascore(
user_input=question,
response=response,
reference=reference,         # 判断哪些claim是"错的"
retrieved_contexts=contexts, # 判断错误是否源于噪声context
)

总结成一张表:

指标questionresponsecontextsreference考察
Context Precision✓✓✓检索排序
Context Recall✓✓✓检索覆盖
Context Entity Recall✓✓实体覆盖
Faithfulness✓✓✓不瞎编
Answer Relevancy✓✓不跑题
Noise Sensitivity✓✓✓✓抗干扰

按题型聚合

逐条打完分后,按 query_type分组取均值,就能看到每种题型下各指标的表现:

# 分组
by_type = {}
for sample in results:
by_type.setdefault(sample.query_type, []).append(sample)
# 每组每指标取均值
for query_type, samples in by_type.items():
for metric in metrics:
scores = [s.scores[metric] for s in samples if s.scores[metric] >= 0]
avg = sum(scores) / len(scores)

这才是有诊断价值的结果。比如你可能看到:

  • Single-Hop Specific:忠实度 0.92,召回率 0.85 → 基本功OK
  • Multi-Hop Specific:忠实度 0.88,召回率 0.55→ 跨文档检索覆盖不够
  • Multi-Hop Abstract:忠实度 0.72,噪声敏感度 0.35 → 复杂场景下容易被带偏

对应第一篇讲的诊断思路:召回低修检索(扩top-k、调chunk),忠实低修生成(调prompt),噪声高加过滤。现在你知道在哪种题型上修。

· · ·

07测试结果长什么样

跑完 rag-evaluator run-all后,evaluation_results.json是结构化数据,rag-evaluator report把它渲染成一份带图表的Markdown报告。下面是一份示例报告的样子(数据为模拟):

总览表

MetricScore
Answer Relevancy0.7800
Context Precision0.9200
Context Recall0.7100
Entity Recall0.6500
Faithfulness0.8500
Noise Sensitivity0.2300

总览图

图2:总览指标柱状图

按题型对比表

MetricMulti-Hop AbstractMulti-Hop SpecificSingle-Hop Specific
Answer Relevancy0.68000.80000.8500
Context Precision0.85000.93000.9500
Context Recall0.55000.75000.8200
Entity Recall0.50000.68000.7500
Faithfulness0.72000.88000.9200
Noise Sensitivity0.35000.20000.1500

各题型独立图

Single-Hop Specific(7 samples)——基本功表现:

图3:Single-Hop Specific 指标柱状图

Multi-Hop Specific(7 samples)——跨文档关联能力:

图4:Multi-Hop Specific 指标柱状图

Multi-Hop Abstract(6 samples)——复杂推理能力:

图5:Multi-Hop Abstract 指标柱状图

怎么读这份报告

三张图并排看,规律一目了然:

  1. 从左到右难度递增

    ,分数逐步下降——符合直觉,多跳抽象题本就是最难的。

  2. Context Recall 下降最明显

    (82% → 75% → 55%)——说明检索器在需要跨多个文档覆盖时力不从心,这是要优先修的环节。

  3. Noise Sensitivity 上升最明显

    (15% → 20% → 35%)——复杂场景下检索到的无关内容更多,系统被带偏的概率更高。

  4. Context Precision 一直很高

    (95%/93%/85%)——检索排序还行,排在前面的基本是相关的,问题不在排序而在覆盖。

对应的优化方向:扩大top-k(提升召回覆盖),加rerank(把多跳场景下更准确的上下文顶上去),在prompt里强调"只依据上下文回答"(降低噪声敏感度)。

· · ·

08中间产物:哪些可以复用

整条流水线最贵的是Step 2(建KG,大量NER调用)和Step 3(合成问题,大量LLM调用)。所以每一步都要持久化:

output/
├── testset.json                     # Step 3 产物(最重要)
└── artifacts/
├── documents.json               # Step 1 产物
├── knowledge_graph.pkl          # Step 2 产物
└── knowledge_graph_summary.json # Step 2 摘要

复用逻辑很简单:

你想做什么复用哪个文件省掉哪些步骤
同一份测试集,测多个RAG系统testset.jsonStep 1-2-3全省
同一批文档,换比例重新出题knowledge_graph.pklStep 1-2省
同一批文档,什么都不复用无全部重跑

这也是为什么要分步设计——Step 3生成的测试集是"出题人"的产出,和"考生"(RAG系统)完全解耦。你可以让10个不同的RAG系统做同一份卷子,然后横向对比。

· · ·

09跑通闭环:完整命令

配套项目有两个工具,分工明确:

  • doc-indexer

    :文档切片 → Embedding → 写入Qdrant(造一个RAG系统当"考生")

  • rag-evaluator

    :出题 → 让考生答题 → 打分 → 出报告

# 1. 先造一个"考生"——文档入库到Qdrant
cd doc-indexer
uv run doc-indexer index -d ./my_docs -c my_collection \
--openai-base-url http://localhost:11434/v1 \
--embedding-model nomic-embed-text
# 2. 一键跑完:出题 + 答题 + 打分
cd ../rag-evaluator
uv run rag-evaluator run-all \
-d ./my_docs \
-c my_collection \
-o ./eval_output \
--openai-base-url http://localhost:11434/v1 \
--llm-model qwen2.5 \
-n 30
# 3. 生成可视化报告
uv run rag-evaluator report -r ./eval_output/evaluation_results.json

用已有测试集测另一个RAG系统:

# 直接用上次的testset.json,换一个RAG系统
uv run rag-evaluator run-all \
-d ./my_docs \
-c another_collection \
-o ./eval_output_B \
--reuse-testset ./eval_output/testset.json

· · ·

10总结:三篇文章,一条完整的线

核心思路一句话:让LLM既当出题人(Step 2-3的知识图谱+问题合成),又当评委(Step 5的6指标打分),用文档本身作为ground truth来源,实现无需人工标注的自动化评测闭环。

闭环跑通之后,"你的RAG做得怎么样"不再是一个主观感受,而是一组可量化、可对比、可追踪的数字。每次改了切片策略、换了Embedding模型、调了prompt——重跑一次闭环,看数字涨了还是跌了,就知道改对了没有。

代码在 github.com/quick-sort/hello_world/rag-eval-example,uv sync即可运行。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

万字长文讲透 RAG在实际落地场景中的优化 本文主要围绕DB-GPT应用开发框架如何在实际落地场景做RAG优化。背景在过去两年中,检索增强生成(RAG,Retrieval-Augmented Generation)技术逐渐成为提升智能体的核心组成部分。通过结合检索与生成的双重能力,RAG能够引入外部知识,从而为大模型在复杂场景中的应用提供更多可能性。但是在实际落地场景中,往往会存在检索准确率低,噪音干扰多,召回完整性,专业性不够,导致LLM幻觉严重的问题。 阅读详情

相关推荐

Agentic RAG:RAG从静态到具有理解、推理、决策的Agentic RAG

RAG技术演进:从静态检索到智能代理 RAG(检索增强生成)技术经历了五个关键发展阶段:基础RAG(关键词检索)、高级RAG(语义理解)、模块化RAG(灵活架构)、图RAG(知识图谱)和最新的Agentic RAG(智能代理)。Agentic RAG通过引入自主AI代理,具备反思、规划、工具使用和多代理协作能力,实现了动态决策和自适应工作流。相比传统RAG的静态检索流程,Agentic RAG能处理复杂多步推理任务,通过自我改进机制提高输出质量,并支持多专业代理协作,显著提升了RAG系统在复杂场景下的表现。

2537

基于RAG的企业智能客服项目,已拿70万offer!

基于 RAG 构建一套企业智能客服系统📖。

m0_59164520的博客 1444

用AI学习graphify

Graphify是一个AI驱动的知识图谱构建工具,能够将代码、文档、论文、图像和视频等多模态数据转换为结构化知识图谱。其核心技术特点包括: 多模态处理能力: 支持25+编程语言的AST解析 处理PDF、Markdown等文档 集成Whisper进行音视频转录 高效知识提取: 采用确定性AST解析与LLM语义提取结合 相比直接读取源文件,查询token消耗最多减少71.5倍 增量更新机制仅处理变更文件 智能分析功能: 自动识别高中心性的"上帝节点" 发现跨领域的"意外连接&quo

我的专栏 749

从Vibe Coding到可控生产力:Harness Engineering的实践启示

摘要:OpenAI提出的Harness Engineering(工程化治理)理念为AI Agent时代的软件工程提供了关键方法论,旨在解决代码高产出下的质量闭环、上下文管理等核心矛盾。其三大目标包括重构工程师角色、将AI纳入可控体系、实现低成本纠错,通过六大举措(如角色重构、机械化约束、反熵机制等)重构工程流程。该理念与vibe coding高度互补,既保留灵感驱动的敏捷性,又通过工程化体系保障稳定性,最终推动工程师从"代码生产者"升级为"工程体系设计者"。

小程故事多的博客 4400

到底什么是Harness工程?一篇文章从入门到企业落地全解析

随着OpenClaw爆火,Harness Engineering(驾驭工程)成为AI编程时代的热门概念,很多小白对其感到陌生。本文用通俗类比和真实案例,避开复杂术语,从基础定义入手,讲清Harness Engineering的核心逻辑——人类工程师设计“约束系统”(马具),让AI模型(烈马)安全高效地完成代码工作,同时拆解其核心组件、企业落地场景和实战成果,帮小白快速入门,读懂这项能解放人力、提升效率的新技术,轻松掌握它的核心价值和落地思路。

program哲学 3269

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6334

别再只靠RAG了!MCP让大模型从“会说话“到“能办事“,保姆级教程来了

RAG 解决了大模型的“知识滞后”问题,MCP 解决了“行动缺失”问题。二者的结合,不是简单叠加,而是能力跃迁。在智能客服、运维自动化、数据分析师助理等场景中,这种架构已展现出强大生产力。但要真正落地,必须关注工具编排的灵活性、失败处理的健壮性、以及系统的可扩展性。现在,你不仅拥有一个能回答问题的 AI,更拥有一个能为你跑腿、办事、解决问题的数字员工。这才是企业级 AI 的真正价值所在。

m0_59235945的博客 896

西门子S7-1500 PLC模块化编程与生产线自动化实践

PLC(可编程逻辑控制器)作为工业自动化核心设备,其模块化编程技术能显著提升产线控制系统的开发效率。通过SCL高级语言实现算法封装、功能块(FB)复用等工程实践,可构建稳定可靠的分层式控制架构。本文以西门子TIA Portal平台为例,详解S7-1500系列PLC在汽车零部件产线中的标准化应用方案,包含配方管理、设备联动等典型场景的SCL实现,以及Profinet通信、虚拟轴同步等进阶技巧。特别适用于需要快速实施中大型生产线自动化改造的工程师,提供经过验证的异常处理机制和模块化设计规范。

weixin_34341229的博客 457

Agent系统压测实战:用实际负载精准定位性能拐点

性能压测是保障系统稳定性的关键手段,但传统固定QPS压测往往难以暴露真实负载下的隐患。性能拐点是指系统吞吐量随负载增加由升转降的临界点,精准定位它,才能避免资源耗尽引发的雪崩。在高并发场景中,实际负载压测通过还原真实流量形态、请求组合与数据规模,比传统基准测试更具工程参考价值。对于Agent系统这类链路复杂、依赖大模型与外部工具的服务,压测的重要性尤为突出。文章围绕实际负载压测方法,介绍了测试方案设计、工具选型、执行流程与瓶颈分析,帮助开发者找到Agent系统的性能拐点,并落地容量规划与架构改进。

weixin_33984032的博客 168

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | CWDLoss(在线蒸馏 + 离线蒸馏)

这篇文章给大家带来最新改进的是模型的蒸馏利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv11的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了!欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 3308

用Python爬虫抓取大宗交易成交数据:全面解析与实战代码

大宗交易是指在证券市场中,涉及大额买卖的交易。此类交易通常由机构投资者进行,其交易量较大,对市场的影响显著。大宗交易数据包含了买卖双方的成交价格、成交量等关键信息,这些数据对于投资者和分析师而言,具有重要的市场预测意义。Python爬虫是一种自动化抓取互联网上数据的工具。通过爬虫,我们可以定期获取大宗交易数据,节省人工查询的时间。爬虫的工作原理通常包括:发送HTTP请求、获取响应数据、解析网页内容、提取关键信息、存储和展示数据。

2201_76125261的博客 417

AIGC实战之如何构建出更好的大模型RAG系统

本文介绍了如何构建出更好的大模型RAG系统,希望能对学习大语言模型和RAG的同学们有所帮助。 文章目录 1. 前言 2. S1 初级RAG 3. S2 高级RAG 3.1 模型测 3.2 策略测 3.3 模型微调测 4. S3 超级RAG 5. 本书作者 6. 内容简介 7. 购买链接

herosunly的博客 7万+

使用Qt编译Qt WebEngine

这就是使用Qt编译Qt WebEngine模块的基本步骤。通过按照上述步骤,您应该能够成功编译和使用Qt WebEngine来嵌入Web内容到您的Qt应用程序中。Qt WebEngine是Qt框架的一个模块,它提供了一个现代的Web浏览器引擎,可以在Qt应用程序中嵌入Web内容。首先,需要获取Qt的源代码。如果尚未安装,可以从Qt官方网站下载并安装Qt。完成Qt的安装后,您可以构建并运行Qt WebEngine示例来验证编译是否成功。这将把编译好的Qt库文件和头文件安装到之前指定的安装目录中。

DevForge的博客 3017

万字长文讲透 RAG 在实际落地场景中的优化

在过去两年中,检索增强生成(RAG,Retrieval-Augmented Generation)技术逐渐成为提升智能体的核心组成部分。通过结合检索与生成的双重能力,RAG能够引入外部知识,从而为大模型在复杂场景中的应用提供更多可能性。但是在实际落地场景中,往往会存在检索准确率低,噪音干扰多,召回完整性,专业性不够,导致LLM幻觉严重的问题。本文将聚焦RAG在实际落地场景中的知识加工和检索细节,如何去优化RAG Pineline链路,最终提升召回准确率。

xx_nm98的博客 2330

innovus中如何设置cts参数

上面是设置cts的一般设置,如果需要对某些skew group或者某些clock tree设置不一样的参数,如需要对clk1这个clock设置不一样的inverter,可以使用。需要查询已经设置过的ccopt参数,可以使用get_ccopt_property去查询,方法和set_ccopt_property一致。言归正传,cts的设置命令是set_ccopt_property,获取命令是get_ccopt_property。另外,set_ccopt_property提供一套命令查询方法。

芯冰乐 544

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7450

RAG 全链路压测方案:用 Locust 模拟真实检索-生成负载的方法与陷阱

RAG 压测的核心不同在于"全链路分段计时"。不是因为请求量多高,而是因为每个环节都可能成为瓶颈,而且瓶颈非常隐蔽。用 Locust 构建压测脚本时,别忘了查询分布的真实性、分段延迟的记录、以及压测后的瓶颈分析脚本。这三件套配齐了,RAG 系统的性能问题才能真正暴露出来。

2401_87746054的博客 4548

嵌入式STM32F407CET6移植OpenHarmony系统方法

文件末尾添加:export PATH=~/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH。编译完成文件输出在LiteOs源码目录下out/STM32F407_ATK_Explorer文件夹中。②点击connect to the target,下方会自动显示识别出来的芯片型号以及flash大小。⑤点击program verify并点击start,等待烧写并校验完成,你就能看到程序正在运行了。,在选择刚才我们说的Huawei_LiteOS.hex文件。

嵌入式技术开发 546

【从零开始】6. RAG 应用性能压测工具(番外篇)

本文主要讲述 SSE(ServerSent Event)机制,以及如何编写基于 SSE 的压力测试程序,虽然是一个浅显的 Python 实现,但对于希望远程压测的需求来说是够用了(前提是配合其他监控工具使用,因为本工具没有数据统计)。

Kida 的躺平小屋 1345

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

如何构建出更好的大模型RAG系统?

这是一本全面讲解RAG技术原理、实战应用与系统构建的著作。作者结合自身丰富的实战经验,详细阐述了RAG的基础原理、核心组件、优缺点以及使用场景,同时探讨了RAG在大模型应用开发中的变革与潜力。书中不仅揭示了RAG技术背后的数学原理,还通过丰富的案例与代码实现,引导读者从理论走向实践,轻松掌握RAG系统的构建与优化。无论你是深度学习初学者,还是希望提升RAG应用技能的开发者,本书都将为你提供宝贵的参考与指导。

qq_46094651的博客 1790

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

检索增强生成RAG系列10--RAG的实际案例

本次通过一次实践过程给大家演示一下RAG的落地过程。我们可以发现虽然前面2~7中讲了很多理论,在实际过程中算是入门的应用,过程中针对具体场景,我们还是需要做其他大量工作,特别是数据处理、寻找更高召回率的步骤慢慢探索。

代码让AI扣 2202
上一篇: 几句话讲清楚Agent、LLM、MCP、SKill、RAG、WorkFlow
下一篇: 使用 LLM 实现结构化输出
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2832原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值