5分钟带你了解:AI联网搜索与RAG如何选择与应用

SmartFlowAI

点击上方蓝字关注我们

作者:樊奇,上海交通大学硕士研究生

全文约 2000 字,预计阅读时间 5 分钟

众所周知,LLM 的训练数据存在时效性和通用性问题。在面对时效性或是专业性较强的提问时,如果只依赖于内在知识,LLM 就无法很好地回答。为了解决这些问题,让 LLM 搜索信息后再生成的方法应运而生。而搜索信息的方法又可以简单地分为网络搜索本地搜索两种。网络搜索可以在一定程度上缓解 LLM 的时效性问题,而依赖于本地知识库的 RAG 方法可以较好地解决 LLM 在某专业领域知识不足的情况。

如果要打一个比方来描述网络搜索信息、本地搜索信息与依赖内在知识的区别,那么就是

  • 网络搜索信息就像是做项目,网络上的一切信息都可以利用

  • 本地搜索信息就像是开卷考试,只能从有限的资料中搜索与考试科目有关的内容

  • 依赖内在知识就像是闭卷考试,成绩完全取决于自身能力

但是,我们应该如何平衡这三者的关系呢?让我们来看一个真实的使用场景。

社区同学猫猫头想要知道在最近的巴黎奥运会中,乒乓球单打项目的金牌情况,所以他使用了 MindSearch(一款 AI 搜索工具) 来让 LLM 在网络上搜索,并且得到了满意的回复。同时他也选择了直接询问 LLM,但是很明显,LLM 的训练数据截止在了巴黎奥运会举办前,所以 LLM 认为巴黎奥运会还没有举办。

左图:使用mindsearch搜索论文;右图:直接询问LLM

所以,本文将会在一定程度上从原理出发,为大家讲解网络搜索信息、本地搜索信息、依赖内在知识三种方法的利与弊,希望可以对大家在平衡这三者关系方面上有所帮助。

MindSearch 网络搜索

首先我们来简单介绍一下 MindSearch。MindSearch 是 InternLM 团队最近开源的 AI 搜索引擎工具,其可以在3分钟内主动从300+网页中搜集整理有效信息,并进行总结归纳。(进一步阅读见往期内容:《AI搜索能力媲美Perplexity Pro,教你如何部署MindSearch》

上图即为 MindSearch 的整体工作流程。MindSearch 框架主要包含两个 Agent,分别为 Planner 和 Searcher,前者负责生成搜索图以及输出最终的回复,后者则负责网页信息的抽取与整合。不难看出,网络搜索对于 LLM 的长文本能力信息抽取能力以及推理能力提出了要求,而对于 LLM 本身的知识多少却没有限制。另一方面,网络搜索到的信息一定是实时更新的,所以网络搜索很适合用来解决 LLM 的知识时效性问题。

但是,值得注意的一点是,网络搜索信息的全过程极大地依赖于搜索引擎。无论是 DuckDuckGo 还是 Bing,搜索引擎根据搜索关键词返回的结果将会直接影响 LLM 所看到的资料。此外,网络上大量的同质化内容也会对于网络搜索带来不小的挑战。因此,网络搜索信息方法的表现主要受到了搜索引擎和网络信息质量的影响。在某种意义上讲,网络搜索信息的方式更适合处理那些时效性极强,或是存在相关高质量信息来源网页的问题。

从下面的例子我们可以看出,当我们搜索“Real-time tracking 论文”时,由于 mindsearch 默认配置的搜索引擎并不适合检索学术论文(mindsearch 是开源的,可以更换搜索引擎的 API),且“Real-time tracking 论文”相关内容(低时效性)本身可能存在于 LLM 的内在知识中,因此此时直接询问 LLM 的效果可能反而比使用 mindsearch 搜索的更好。

左图:使用mindsearch搜索论文;右图:直接询问LLM

RAG 本地搜索

我们简单介绍一下 RAG(Retrieval Augmented Generation),进一步阅读可以看我们往期内容《5 分钟熟悉 RAG:助力大模型突破训练数据的桎梏》。RAG 的工作原理基本如下:

  1. 将问题向量化并在向量知识库查询

  2. 将查询到的结果的原始信息作为上下文送入 LLM

  3. LLM 依据上下文和问题生成结果并输出

不难看出,RAG 的全过程依赖的是向量知识库的构建以及查询过程,而对于 LLM 的知识能力几乎不做要求,主要依赖于 LLM 的长文本处理能力

由于这样的向量知识库一般可以部署在本地,并且更新频率相对于网络搜索较低(但高于 LLM 内在知识的更新频率),所以适合承载一些专业性知识或是私有知识,用于解决 LLM 的知识通用性问题,不适合用来解决 LLM 的知识时效性问题。

依赖内在知识

依赖内在知识,顾名思义,LLM 在训练过程中学到了什么,它就只会什么。依赖内在知识虽然无法避免 LLM 的知识时效性与通用性问题,甚至在面对专业问题时会发生知识冲突的现象,但是其可以避免外界杂乱信息的干扰。当然,依赖内在知识对于 LLM 的各种能力都提出了较高的要求,包括但不限于知识能力、推理能力等等。

但是如果当我们在询问一些低时效性或几乎无时效性的问题(如生活常识、已被公众广泛接受认可的知识)时,依赖内在知识的方法就显得更加合适了。因为在这种情况下,混杂着大量干扰信息的网页内容也不会对 LLM 的回答产生影响,LLM 的回复稳定性也会更高。

写在最后

综上所述,我们可以简单地总结三者的优势与劣势:

  • 网络搜索知识更适合于时效性极强,或是高质量信息来源网页的问题

  • RAG 更适合于专业性知识或私有知识

  • 依赖内在知识适合几乎无时效性的问题

写到这里,希望 AI 时代的大家也可以像 MindSearch 一样快速搜集整合信息,像 RAG 一样丰富专业知识,最后将这些知识内化为自己的内在知识。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

<think>嗯,用户之前问了关于在本地使用DeepSeek模型的方案,现在又问Llama2+本地RAG构建。我需要先理解这两个概念的关系。用户可能是想了解如何结合Llama2和RAG来搭建本地问答系统,作为开源替代方案。 首先,得确认用户对RAG的理解程度。RAG是检索增强生成,结合了检索和生成模型。Llama2是Meta的开源大模型,适合本地部署。用户可能想知道具体的步骤,比如如何准备数据、选择模型、搭建系统。 用户之前得到过关于DeepSeek官方和开源方案的对比,现在转向具体实现的开源方案。需要详细说明Llama2和RAG的结合方法,可能包括技术选型、步骤、代码示例,以及优缺点。 要注意用户可能的技术背景,可能是开发者或研究人员,需要实用指导。需要分步骤讲解,从数据准备到部署,给出代码示例,比如使用Hugging Face的模型和ChromaDB。 还要考虑用户可能遇到的挑战,比如显存不足、检索效果优化、模型微调等,给出注意事项和建议。对比之前的回答,保持结构一致,但更聚焦在Llama2和RAG的结合上。 最后,总结适用场景,帮助用户决定是否选择这个方案。确保语言通俗,避免过多术语,但作为技术方案,适当的技术细节是必要的。可能需要检查是否有遗漏的步骤或潜在问题,比如数据预处理的重要性,或者模型选择的替代方案。</think>以下是关于使用 **Llama2 + 本地RAG** 构建本地问答系统的技术方案详解: --- ### **核心架构原理** ```mermaid graph LR A[用户提问] --> B(文本向量化) B --> C[向量数据库检索] C --> D[构建Prompt] D --> E[Llama2生成回答] E --> F[最终答案] ``` 通过 **检索增强生成(RAG)** 将外部知识库Llama2结合,突破大模型固有知识限制,实现精准的领域知识问答。 --- ### **技术实现六步曲** #### **1. 知识库准备** - 支持格式:PDF/TXT/Markdown/数据库 - 预处理代码示例: ```python from langchain.document_loaders import DirectoryLoader # 加载本地文档 loader = DirectoryLoader('./docs', glob='**/*.txt') documents = loader.load() # 文本分割 from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = text_splitter.split_documents(documents) ``` #### **2. 向量化引擎选择** - 推荐方案: ```python # 中文Embedding模型 from langchain.embeddings import HuggingFaceEmbeddings embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5") # 英文场景可替换为: # embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2") ``` #### **3. 向量数据库搭建** - ChromaDB本地部署方案: ```python from langchain.vectorstores import Chroma # 持久化存储向量库 vectordb = Chroma.from_documents( documents=chunks, embedding=embeddings, persist_directory="./chroma_db" ) ``` #### **4. Llama2本地部署** - 最低硬件要求: ```markdown - 7B版本:RTX 3090(24GB) *1 - 13B版本:RTX 3090 *2 - 70B版本:需要A100(80GB) *4 ``` - 使用vLLM加速推理: ```python from vllm import LLM, SamplingParams llm = LLM(model="meta-llama/Llama-2-7b-chat-hf") sampling_params = SamplingParams(temperature=0.5, max_tokens=500) ``` #### **5. RAG流程整合** - 核心处理逻辑: ```python def rag_pipeline(query): # 向量检索 retriever = vectordb.as_retriever(search_kwargs={"k": 3}) docs = retriever.get_relevant_documents(query) # 构建Prompt context = "\n".join([doc.page_content for doc in docs]) prompt = f"""基于以下信息用中文回答: {context} 问题:{query} 答案:""" # 生成回答 outputs = llm.generate(prompt, sampling_params) return outputs[0].text ``` #### **6. 交互接口开发** - 快速构建Web API: ```python from flask import Flask, request app = Flask(__name__) @app.route('/ask', methods=['POST']) def ask(): question = request.json['question'] return {'answer': rag_pipeline(question)} if __name__ == '__main__': app.run(host='0.0.0.0', port=8000) ``` --- ### **性能优化技巧** 1. **混合检索策略** ```python # 结合关键词+向量混合检索 from langchain.retrievers import BM25Retriever, EnsembleRetriever bm25_retriever = BM25Retriever.from_documents(chunks) ensemble_retriever = EnsembleRetriever( retrievers=[bm25_retriever, vectordb.as_retriever()], weights=[0.3, 0.7] ) ``` 2. **缓存加速** ```python # 使用磁盘缓存 from langchain.cache import SQLiteCache import langchain langchain.llm_cache = SQLiteCache(database_path=".langchain.db") ``` 3. **量化压缩** ```bash # 使用GGUF量化格式 ./llama.cpp/quantize llama-2-7b.Q4_0.gguf ``` --- ### **方案优势局限** | 维度 | 优势 | 局限 | |-------------|-------------------------------|-------------------------------| | 知识更新 | 🟢 支持实时更新知识库 | 🔴 需要定期维护向量库 | | 硬件成本 | 🟢 单卡GPU可运行 | 🔴 70B模型需要高端显卡 | | 响应速度 | 🟡 3-5秒级响应 | 🔴 比API方案慢 | | 准确率 | 🟡 依赖检索质量 | 🔴 存在幻觉风险 | -- ### **典型应用场景** 1. 企业知识库问答系统 2. 个人数字文档助手 3. 行业法规智能查询 4. 学术论文研究助手 --- **部署建议**: - 从7B版本开始验证原型,逐步升级模型规模 - 使用LangChain框架可快速集成更多功能模块(如联网搜索、代码解释器等) - 对关键领域知识建议进行Llama2的LoRA微调(需准备标注数据)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值