RAG系统完整流程

使用 RAGAS 评测 RAG(检索增强生成)系统的完整流程和代码实现 以下是使用fill:#333;color:#333;color:#333;fill:none;准备测试数据运行RAG系统收集输出结果RAGAS指标计算可视化分析。 阅读详情

  • RAG的整体架构设计:

在这里插入图片描述

RAG系统完整流程:

  1. 数据准备阶段:把你的文档、数据库等各种知识源准备好
  2. 索引构建阶段:把这些知识"消化"成机器能快速查找的格式
  3. 检索阶段:用户问问题时,快速找到相关的知识
  4. 生成阶段:结合找到的知识和问题,生成靠谱的答案

1. Overview

在这里插入图片描述
AG全称是Retrieval-Augmented Generation,中文叫"检索增强生成"。听起来有点学术,咱们用大白话解释:
传统LLM的问题: 想象你养了一只鹦鹉(LLM),它很聪明,能流利地说话。但问题是,它只会说训练时学到的话,而且:

  • 如果你问它昨天的新闻,它不知道(知识过时)
  • 如果你问它你公司的内部规定,它也不知道(没见过的知识)
  • 有时候它还会"胡编乱造",一本正经地瞎说(幻觉问题)

RAG的解决方案: 给这只鹦鹉配一个助手,助手手里拿着一堆资料。每次你提问时:

  1. 助手先翻资料,找到相关内容
  2. 把资料递给鹦鹉
  3. 鹦鹉看着资料回答问题

这样,鹦鹉的回答就有理有据了!

RAG技术通过将检索机制与生成模型结合,使LLM能够从外部知识源获取相关文档并基于这些文档生成答案,从而解决了传统LLM的知识过时、缺乏领域知识和幻觉等问题。

完整系统架构参考:
在这里插入图片描述

RAG的核心优势

在这里插入图片描述

举个实际例子:

假设你在做一个医疗问答系统: 用户问:“阿司匹林的常见副作用是什么?”

传统LLM可能回答: “阿司匹林可能导致胃部不适、恶心等。(但不确定是否完整或最新)”

RAG系统的工作流程:

  1. 检索系统在医学数据库中搜索"阿司匹林 副作用"
  2. 找到3篇相关医学文献
  3. 提取关键信息:胃肠道反应、出血风险、过敏反应等
  4. LLM基于这些文献生成答案: "根据医学文献,阿司匹林的常见副作用包括:
  5. 胃肠道反应(胃痛、恶心、消化不良)
  6. 出血风险增加
  7. 过敏反应(如荨麻疹) 参考来源:[文献1]、[文献2]"

看到区别了吗?RAG不仅更准确,还能告诉你信息来源!

2. Index(索引构建)

在这里插入图片描述

索引构建是RAG的"预处理"阶段,就像你上学前要先整理笔记、做好书签一样。这个阶段要把原始文档转化成机器能快速检索的格式。

2.1 数据获取(Data Ingestion)

第一步是收集数据,可能来自:

  • 📄 PDF、Word、Markdown等文档
  • 🌐 网页、Wiki
  • 💾 数据库
  • 📧 邮件、聊天记录
  • 📊 Excel、CSV等结构化数据

实际案例: 某电商公司想做客服机器人,他们需要收集:

  • 产品说明文档(PDF)
  • 常见问题FAQ(网页)
  • 历史工单数据(数据库)
  • 退换货政策(Word文档)

2.2 文档预处理(Preprocessing)

拿到原始数据后,需要"清洗"一下:

#示例:文档预处理代码
def preprocess_document(doc):
    # 1. 移除多余的空格和换行
    doc = re.sub(r'\s+', ' ', doc)
    # 2. 提取纯文本(从PDF、HTML等)
    if doc_type == 'pdf':
        text = extract_text_from_pdf(doc)
    # 3. 规范化格式
    text = text.strip().lower()
    # 4. 去除无用信息(页眉、页脚等)
    text = remove_headers_footers(text)
    return text

2.3 文档分块(Chunking)

这是最关键的一步!为什么要分块?

想象一下: 你有一本500页的《红楼梦》,如果有人问"林黛玉是谁",你不可能把整本书都递给他看吧?你会翻到介绍林黛玉的那几页。

分块就是这个道理:把大文档切成小段,每段包含一个相对完整的语义单元。

常见的分块策略:

  1. 固定大小分块(最简单,但可能切断语义)
#每300个字符一块
chunk_size = 300
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
  1. 句子分块(按自然语言边界)
#按句号、问号、感叹号分割
import nltk
sentences = nltk.sent_tokenize(text)
段落分块(保留逻辑结构)
#按换行符或段落标记分割
chunks = text.split('\n\n')
滑动窗口分块(带重叠,避免信息丢失)

chunk_size = 300
overlap = 50  # 重叠50字符
chunks = []
for i in range(0, len(text), chunk_size - overlap):
    chunks.append(text[i:i+chunk_size])

分块的关键参数:

  • 块大小(Chunk Size):太小 → 语义不完整;太大 → 检索不精准 ;推荐200-500 tokens(约150-400个汉字)。
  • 重叠(Overlap):避免关键信息被切断,推荐10-20% 的块大小。

举个例子:

原文:
阿司匹林是一种常用的解热镇痛药。它的主要作用包括:
解热:降低发烧体温
镇痛:缓解轻到中度疼痛
抗血小板:预防血栓形成

但是,阿司匹林也有副作用。常见的副作用包括:
胃肠道反应:胃痛、恶心
出血风险:特别是长期服用

分块后:

Chunk 1: "阿司匹林是一种常用的解热镇痛药。它的主要作用包括:
         1. 解热:降低发烧体温
         2. 镇痛:缓解轻到中度疼痛
         3. 抗血小板:预防血栓形成"

Chunk 2: "阿司匹林的主要作用包括预防血栓形成。但是,阿司匹林也有副作用。
         常见的副作用包括:
         1. 胃肠道反应:胃痛、恶心
         2. 出血风险:特别是长期服用"

2.4 向量化(Embedding)

分块后的文本还是人类语言,机器不懂。我们需要把它转换成向量(一串数字,Embedding)。

什么是Embedding?
把文字转换成数字向量,相似的文字会得到相似的向量。

#使用OpenAI的Embedding模型
from openai import OpenAI
client = OpenAI()

text = "阿司匹林是一种解热镇痛药"
response = client.embeddings.create(
    model="text-embedding-3-small",
    input=text
)
vector = response.data[0].embedding
print(f"向量维度: {len(vector)}")  # 输出: 1536
print(f"前5个值: {vector[:5]}")    # 输出: [0.023, -0.014, 0.089, ...]

为什么需要向量化?
想象你在找"感冒药",但文档里写的是"抗感冒药物"、"治疗感冒的药品"等各种说法。如果只靠关键词匹配,就找不到了。
但是!如果用向量化:

"感冒药" → [0.1, 0.3, 0.5, ...]
"抗感冒药物" → [0.12, 0.29, 0.51, ...]  # 向量很接近!
"汽车" → [0.8, 0.1, 0.2, ...]  # 向量差很远

向量之间可以计算相似度(余弦相似度),数值越接近1越相似:

from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

vec1 = np.array([0.1, 0.3, 0.5])
vec2 = np.array([0.12, 0.29, 0.51])
similarity = cosine_similarity([vec1], [vec2])[0][0]
print(f"相似度: {similarity:.3f}")  # 输出: 0.999(非常相似)

常用的Embedding模型:

在这里插入图片描述

2.5 存储到向量数据库

最后,把这些向量存起来,用专门的向量数据库(Vector Database)。
为什么不用普通数据库?
普通数据库(MySQL、MongoDB)擅长精确查询:“找ID=123的记录”。但向量搜索是相似性查询:“找和[0.1, 0.3, 0.5]最相似的10个向量”。
向量数据库用了特殊的索引算法(如HNSW、IVF),能在百万、千万级向量中毫秒级找到最相似的。

常用向量数据库:

  1. Pinecone(云服务,简单好用)
import pinecone

pinecone.init(api_key="your-api-key")
index = pinecone.Index("my-rag-index")

#插入向量
index.upsert([
    ("doc1_chunk1", vector1, {"text": "阿司匹林是..."}),
    ("doc1_chunk2", vector2, {"text": "副作用包括..."})
])

#查询
results = index.query(query_vector, top_k=3)
  1. Milvus(开源,功能强大)
  2. FAISS(Facebook开源,本地使用)
  3. Weaviate(支持混合搜索)

完整的索引构建代码示例:

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Pinecone
import pinecone

#1. 读取文档
with open("medical_docs.txt", "r") as f:
    document = f.read()

#2. 分块
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separators=["\n\n", "\n", "。", "!", "?", ","]
)
chunks = text_splitter.split_text(document)

#3. 初始化embedding模型
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

#4. 初始化向量数据库
pinecone.init(api_key="your-key")
index_name = "medical-rag"

#5. 创建索引并存储
vectorstore = Pinecone.from_texts(
    texts=chunks,
    embedding=embeddings,
    index_name=index_name
)

print(f"成功索引了 {len(chunks)} 个文本块!")

3. Retrieval(向量检索)

  • BM25与TF-IDF参考:https://blog.youkuaiyun.com/Tracycoder/article/details/158663878?sharetype=blogdetail&sharerId=158663878&sharerefer=PC&sharesource=Tracycoder&spm=1011.2480.3001.8118
  • 混合搜索(Hybrid Search)参考:

索引建好后,用户来提问了。检索阶段的任务是:从海量知识中快速找出最相关的那几条。

在这里插入图片描述

3.1 查询处理

用户输入的问题往往不是完美的搜索词。比如:

用户原始问题:“我吃了阿司匹林后胃疼怎么办?”

需要优化为:

“阿司匹林 胃痛 副作用”(关键词提取)
“阿司匹林导致的胃部不适如何处理”(问题改写)

3.2 向量检索

把用户问题也转换成向量,然后在向量数据库中搜索:

#用户问题
question = "阿司匹林有哪些副作用?"

#问题向量化
question_embedding = embeddings.embed_query(question)

#向量检索(找最相似的3个)
results = vectorstore.similarity_search_by_vector(
    embedding=question_embedding,
    k=3  # 返回top3
)

for i, doc in enumerate(results):
    print(f"结果{i+1}:")
    print(doc.page_content)
    print(f"相似度: {doc.metadata['score']}")
    print("-" * 50)
输出示例:
结果1:
阿司匹林的常见副作用包括:1. 胃肠道反应:胃痛、恶心、消化不良...
相似度: 0.89
结果2:
长期服用阿司匹林可能增加出血风险,特别是胃肠道出血...
相似度: 0.85
结果3:
少数患者对阿司匹林过敏,可能出现荨麻疹、呼吸困难等症状...
相似度: 0.81

3.3 检索策略

检索系统通常采用混合搜索方法,结合向量搜索(找语义相似的文档)和关键词搜索(精确匹配),然后对结果进行排序和过滤。

  1. 单纯向量搜索
  • 优点:能理解语义
  • 缺点:对专有名词、数字等不敏感
  1. 混合搜索(Hybrid Search)
  • 向量搜索 + 关键词搜索
  • 综合排序,取最优结果
  • 常采用RRF进行融合:

RRF 用“排名”而不是“原始分数”来融合多个检索器结果。 比如你有两路召回:

  • BM25 排名列表
  • 向量检索排名列表

RRF 会给每个文档一个融合分:

RRF ( d ) = ∑ i = 1 m 1 k + r i ( d ) \text{RRF}(d)=\sum_{i=1}^{m}\frac{1}{k+r_i(d)} RRF(d)=i=1∑m​k+ri​(d)1​

  • m m m:检索器个数
  • r i ( d ) r_i(d) ri​(d):文档 (d) 在第 (i) 个检索器中的名次(从 1 开始)
  • k k k:平滑常数(常用 60)
#混合搜索示例
def hybrid_search(query, alpha=0.5):
    # alpha: 向量搜索权重(0-1)
    # 向量搜索结果
    vector_results = vectorstore.similarity_search(query, k=10)
    # 关键词搜索结果(BM25算法)
    keyword_results = bm25_search(query, k=10)
    # 融合排序
    final_results = merge_results(vector_results, keyword_results, alpha)
    return final_results[:3]  # 返回top3
  1. 重排序(Re-ranking)
    初步检索后,用更精细的模型重新排序,提高精度。
from sentence_transformers import CrossEncoder

#加载重排序模型
reranker = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')

#对检索结果重新打分
query = "阿司匹林副作用"
candidate_docs = ["文档1内容", "文档2内容", "文档3内容"]

scores = reranker.predict([(query, doc) for doc in candidate_docs])

#按分数排序
ranked_docs = [doc for _, doc in sorted(zip(scores, candidate_docs), reverse=True)]

3.4 检索效果评估指标

类别指标作用公式/口径(简)数值含义(越大越好?)适用阶段
检索Recall@K看“相关证据有没有被召回”TopK 中相关数 / 全部相关数✅ 越大越好离线检索评估核心
检索HitRate@K (Success@K)TopK 是否至少命中一条相关命中=1,否则0;再求平均✅ 越大越好快速看“能不能找到”
检索Precision@KTopK 结果纯度TopK 中相关数 / K✅ 越大越好控制噪声文档
检索MRR@K第一条相关结果排位质量平均(1/首个相关排名)✅ 越大越好问答类场景很实用
检索MAP@K多相关文档时的整体排序质量AP 的平均(截断到K)✅ 越大越好多证据任务
检索nDCG@K支持“分级相关性”的排序质量DCG/IDCG✅ 越大越好有 graded relevance 标注时
上下文Context Recall金标准证据是否进入上下文覆盖到的证据比例✅ 越大越好检索→生成衔接评估
上下文Context Precision上下文是否“少噪声”相关上下文 / 总上下文✅ 越大越好防止喂给LLM太多无关信息
上下文Context Relevance上下文与问题语义相关程度模型/人工打分✅ 越大越好语义检索质量检查
生成EM答案与标准答案完全一致exact match 比例✅ 越大越好有标准答案任务
生成F1答案与标准答案重合程度token 级 P/R 调和平均✅ 越大越好抽取/事实问答
生成Faithfulness / Groundedness回答是否基于证据、少幻觉模型/人工判定✅ 越大越好RAG 可信度核心
生成Answer Relevance回答是否真正回答问题模型/人工打分✅ 越大越好用户体验关键
工程Latency(P50/P95)响应速度请求耗时分位数❌ 越小越好线上 SLA
工程Cost / Query单次请求成本检索+重排+生成总成本❌ 越小越好线上运营
工程Throughput(QPS)吞吐能力每秒请求数✅ 越大越好高并发场景
业务人工满意度/转化率最终业务价值问卷、点击、转化✅ 越大越好A/B 与上线决策

4. Generation(生成)

在这里插入图片描述

4.1 提示词构建(Prompt Engineering)

把检索到的文档和用户问题组合成一个完整的提示词(Prompt),发给LLM。

基础模板:
prompt_template = """
你是一个专业的医疗助手。请基于以下参考资料回答用户的问题。
如果参考资料中没有相关信息,请明确告知用户。

参考资料:
{context}

用户问题:
{question}

请提供详细、准确的回答,并标注信息来源。
"""

#填充内容
context = "\n\n".join([doc.page_content for doc in retrieved_docs])
question = "阿司匹林有哪些副作用?"

prompt = prompt_template.format(context=context, question=question)
进阶模板(结构化输出):
advanced_prompt = """
参考资料:
{context}

用户问题:{question}

请按以下格式回答:
直接回答:用1-2句话概括答案
详细说明:展开解释,分点列出
注意事项:相关的警告或建议
信息来源:标注参考了哪些资料

回答:
"""

4.2 调用LLM生成

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "你是一个专业的医疗助手"},
        {"role": "user", "content": prompt}
    ],
    temperature=0.3,  # 降低随机性,提高准确性
    max_tokens=500
)

answer = response.choices[0].message.content
print(answer)

4.3 答案后处理

生成答案后,可能还需要:

  1. 引用标注:给答案加上来源链接
def add_citations(answer, sources):
    """给答案添加引用"""
    for i, source in enumerate(sources):
        answer += f"\n[{i+1}] {source['title']} - {source['url']}"
    return answer
  1. 安全过滤:检查答案是否包含有害内容
def safety_check(answer):
    harmful_keywords = ["自杀", "违法", "...]
    for keyword in harmful_keywords:
        if keyword in answer:
            return "抱歉,这个问题涉及敏感内容,建议咨询专业人士。"
    return answer
  1. 格式美化:Markdown格式化、表格化等

4.4 完整的RAG生成代码

def rag_query(question):
    """完整的RAG查询流程"""
    # 1. 检索相关文档
    retrieved_docs = vectorstore.similarity_search(question, k=3)
    # 2. 构建prompt
    context = "\n\n".join([
        f"【文档{i+1}】{doc.page_content}"
        for i, doc in enumerate(retrieved_docs)
    ])
    prompt = f"""
    参考以下资料回答问题:
    {context}
    问题:{question}
    要求:
    1. 回答要准确、专业
    2. 必须基于参考资料
    3. 标注信息来源
    """
    # 3. 调用LLM生成
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.3
    )
    answer = response.choices[0].message.content
    # 4. 添加引用
    sources = [
        {"title": f"文档{i+1}", "score": doc.metadata.get('score', 0)}
        for i, doc in enumerate(retrieved_docs)
    ]
    return {
        "answer": answer,
        "sources": sources,
        "retrieved_docs": [doc.page_content for doc in retrieved_docs]
    }

#使用示例
result = rag_query("阿司匹林有哪些副作用?")
print("答案:", result['answer'])
print("\n参考来源:", result['sources'])

在这里插入图片描述

1.42 RAG完整流程详解:从文档处理到答案生成,5步构建知识库系统 本文详细介绍了构建RAG(检索增强生成)系统的5个关键步骤:1)文档加载,支持PDF、TXT等多种格式;2)文档分块处理,设置合理的块大小和重叠;3)向量化转换,使用OpenAI等嵌入模型;4)构建向量数据库,可选择FAISS、Pinecone等方案;5)检索相关文档并生成答案。通过完整的流程讲解和示例代码,帮助开发者快速搭建知识库问答系统。系统架构包含文档处理、向量检索和大模型生成三个核心模块,实现从原始文档到精准答案的完整流程。 阅读详情

相关推荐

10、从文档上传到答案生成:一篇讲透 RAG 系统完整流程

如果你把 RAG 只理解成“接一个向量库”,那你很容易把它做成一个能跑但不好用的半成品。文档解析切块Embedding召回上下文拼接答案生成每一步都不是可有可无的配角,而是在共同决定最终问答质量。RAG 不是单一技术点,而是一整条知识处理流水线。知识库问答答得准不准,往往不是模型一个人的问题,而是整条链路一起决定的结果。你一旦真正看懂这条流程,就会从“会调 AI 接口”升级到“会搭 AI 知识系统”。

专注 AI 应用开发全栈技术,从 Python、机器学习到大模型、AIGC、模型部署,系统输出实战干货。 236

RAG新手指南:零基础构建RAG系统的完整流程

在开始之前,我还是打算再次简要的介绍一下 RAG。在 Meta 的官方 Blog 上有这样一段话:这段话主要讲述了一个新的模型架构,也就是RAG (检索增强生成)的重要性和优势。构建一个能够进行研究和上下文分析的模型虽然更具挑战性,但对未来的技术进步非常关键;通过在知识密集的下游任务上微调,RAG 可以实现最先进的结果,比现有的最大的预训练序列到序列语言模型还要好;与传统的预训练模型不同,RAG 的内部知识可以轻松地动态更改或补充。

2401_84204207的博客 1429

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析Facebook登录协议的逆向工程,重点拆解`lgndim`和`encpass`等加密参数的生成逻辑,并提供完整的Python实现代码。通过Base64解码和RSA加密技术,帮助开发者理解并实现Facebook登录流程,同时涵盖工程优化与安全实践。

weixin_30687051的博客 476

【Agent 学习日记】从问题到答案:RAG系统完整处理流程与核心机制深度拆解

我是小假 期待与你的下一次相遇 ~

纵有疾风起 人生不言弃 2256

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 235

AS7341光谱传感器实战:I2C驱动、Arduino与Python代码及校准指南

光谱传感器通过多通道滤光片与光电二极管阵列,将光信号转换为数字量,实现波长级测量。其技术价值在于以低成本替代传统光谱仪,完成颜色识别、光源分析等任务。在植物补光、水质检测等场景中,多通道光谱数据能精准区分红光与深红光比例。AS7341作为9通道(8可见光+1近红外)I2C传感器,支持Arduino、ESP32和树莓派,结合增益与积分时间调节,可适应强弱光环境。本文从芯片原理出发,详解寄存器配置、双平台代码实现、暗电流与白板校准方法,并给出常见问题排查指南,帮助创客快速构建光谱应用。

weixin_42519733的博客 252

AI RAG 系统完整工作流程

RAG系统工作流程解析:从用户提问到生成回答的完整过程 RAG(检索增强生成)系统通过结合检索与生成技术,实现基于知识库的准确回答。流程始于用户提问,系统首先进行查询预处理(意图识别、纠错改写),随后并行执行向量检索和关键词检索,混合召回相关文档。通过精排模块筛选Top-K最相关片段后,系统将上下文与问题组装成Prompt输入大语言模型。LLM基于检索内容生成回答,最后经过后处理(引用溯源、事实校验)返回给用户。整个过程有效降低幻觉风险,确保回答准确可追溯,核心价值在于将LLM生成建立在真实知识库内容基础上

小单的博客专栏 1079

C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

三千幻想乡 1万+

Advanced RAG实战:基于PDF文件构建RAG知识库与问答系统的完整流程

一、架构图

m0_59235245的博客 198

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇 文章目录Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇前言一、数据库的安装前准备,前提是没有安装过!!!二、仅安装数据库软件(数据库运行环境)三、添加数据库实例四、设置监听程序,让数据库可以通过网络访问五、为目标数据库设置网名总结 前言 如果需要安装包:联系我看到会给你链接,因为现在官网已经不提供10g,11g的安装包了,在网盘保存望悉知(回复不会很及时,下班看到会回复敬请谅解)。 提示:以下

zhx__的博客 5630

步进电机

步进电机

happygrilclh的博客 2140

BeeAI Framework RAG系统构建:实现检索增强生成的完整流程与最佳实践

在当今AI驱动的应用开发中,检索增强生成(RAG)技术已成为连接大语言模型与企业知识库的关键桥梁。BeeAI Framework作为支持Python和TypeScript的生产级AI代理开发框架,提供了一套完整的RAG解决方案,帮助开发者快速构建具备知识检索能力的智能应用。本文将详细介绍如何使用BeeAI Framework构建高效RAG系统,从环境配置到实际应用的完整流程与最佳实践。 ## R

gitblog_00240的博客 512

RK3588 Buildroot 新建板级DTS

在rk3588 linux开发过程中,新创建板型主要基于硬件差异化、软件适配与优化、项目定制化等多方面需求。

501846585_QQAndroid_java 1298

Dify + RAG 实战:打造可落地的企业知识问答系统(附完整流程)

公司有成千上万份技术文档、培训资料,员工找个信息要翻半天?传统搜索只能找到文件名,找不到答案?今天教你用Dify打造一个企业专属的"知识大脑"!基于RAG技术,让几万份文档瞬间变成智能助手,员工提问秒得答案,知识管理从此告别"大海捞针"

2401_85325726的博客 1845

Zemax与Matlab交互:双胶合优化详细流程

Zemax与Matlab交互:双胶合优化详细流程

weixin_72050316的博客 629

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LangFlow构建RAG系统的完整流程演示

通过可视化工具LangFlow,快速构建检索增强生成(RAG)系统,实现PDF知识库问答。无需编写代码,拖拽组件即可完成文档加载、文本切分、向量化、检索与生成全流程,并支持实时调试与团队协作,显著提升开发效率。

weixin_34268462的博客 725

VC中sqlite的使用

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

RAG 系统文档上传完整流程

从用户上传文件 → 文件存储 → 解析提取文本 → 切片分块 → 元数据绑定 → 向量化入库,完整生产链路,包含异常处理、版本、去重、溯源配套逻辑,对接上面讲的。用户上传→接收校验→持久化原始文件→文档解析→清洗预处理→→向量生成→写入向量库+元数据库→ 索引就绪可检索。

weixin_48309090的博客 101

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】

macOS操作系统快速构建本地私有化知识库,使用deepseek-r1:14b版本开源模型,完全开源化构建流程。

高克莱的博客 1758

RAG 全流程实战:从入门到精通,手把手教你独立搭建完整系统

RAG 全流程实战:从入门到精通,手把手教你独立搭建完整系统

优快云_224022的博客 969

构建高质量RAG系统:从文档清洗到向量化的完整流程(收藏必备)

文章详细介绍了RAG系统中从原始文档到知识向量的完整构建流程,强调数据工程而非算法是RAG系统的起点。内容涵盖文档来源分析、知识单元拆分策略、清洗技术、复杂元素处理、Embedding模型选择及向量数据库应用等关键环节。通过多种拆分和清洗方法,将异构文档转化为高质量知识单元,借助向量化技术存储于专用数据库,为后续检索提供基础,直接影响RAG系统的成败。

2401_85373691的博客 707

RAG 系统 “检索 - 筛选 - 生成” 完整流程

本文档详细解析RAG(检索增强生成)系统的工作流程,从用户提问到最终回答分为五个关键步骤:提问优化(标准化问题表述)、混合检索(结合语义与关键词匹配获取候选片段)、筛选重排(去除冗余、排序相关片段)、增强输入构建(组合问题、片段与提示词)和模型生成(整合信息形成连贯回答)。以"LLM训练数据核心条件"为例,展示了系统如何通过多轮处理将原始知识片段转化为精准回答。该系统设计旨在保证回答既基于知识库内容,又具备良好的逻辑连贯性,适用于知识库搭建和RAG优化场景。

Dustmicro的博客 762

RAG系统设计:从查询处理到生成答案完整流程

这样更可靠、更容易解析。语料切分:项目中的关系抽取任务是句子级关系抽取,传统的句子级关系抽取数据集每条样本的句子长度是几十个Token。我在项目中使用的自建数据集,质量一般,实体关系密度较低,如果按照传统句子级关系抽取的窗口来切分语料,会导致关系样本量不足。计算方法:首先利用 Embedding 模型(如 BGE 或 OpenAI-text-embedding)对某个关系类别下的所有样本句子进行向量化,然后对这些高维向量求均值(Mean Pooling),得到该类别的“质心向量”来代表这个关系的原型。

w2026314的博客 275

精通RAG技术:全面解析利用ElasticSearch构建AI搜索系统及RAG应用的完整流程

AI 对话式搜索是一种基于自然语言处理(NLP)和机器学习技术的搜索方式,旨在通过与用户的自然对话实现信息检索。这种搜索模式允许用户以自然语言提问,而不是输入特定的关键词。AI 对话式搜索系统可以理解用户的查询意图,并通过智能匹配算法提供相关的答案或信息。这种搜索体验更加贴近人类的交流方式,使搜索过程更加直观和用户友好,特别适用于需要复杂查询或个性化推荐的场景。接下来,我们将深入探讨如何构建这样的 AI 对话式搜索应用程序,从数据准备、模型选择到系统集成,逐步展示实现这一技术的不同步骤。

h1453586413的博客 884

03-企业RAG系统完整流程-加载切分向量化召回与生成

企业RAG知识库 第三期

I1951245924的博客 296

本地RAG系统实操指南:从PDF到可验证问答的完整流程

RAG(检索增强生成)是一种将外部知识库与大语言模型结合的基础技术范式,其核心原理是通过向量检索定位相关文本片段,再约束大模型仅基于这些片段生成答案。该技术的价值在于提升回答准确性、降低幻觉风险,并支持私有数据闭环处理。典型应用场景包括企业文档智能问答、产品手册检索、合规知识库构建等。本文聚焦‘本地化部署’与‘效果可验证’两大关键诉求,基于真实工业级实践,详解PDF预处理、中文Embedding选型(如bge-small-zh)、FAISS向量索引调优及Qwen2-1.5B本地推理集成等落地细节,所有步骤均

读书、思考、生活 550

RAG 系统架构详解:从索引到查询的完整流程

RAG = 搜索引擎(找资料) + 大模型(读资料并回答)索引阶段:把文档切成小块,转成向量,存入数据库。(相当于做索引卡片)查询阶段:把问题转成向量,搜出最相关的卡片,连同问题一起交给大模型,让模型看着卡片回答问题。

weixin_46191006的博客 352
上一篇: 一文讲清 TF-IDF 与 BM25:从“词频统计”到“工业级关键词检索”
下一篇: LeetCode Hot100(62/100)——62. 不同路径
TracyCoder123
博客等级 码龄8年 1万+粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyCoder123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值