RAG(检索增强生成)是结合检索与生成式 AI 的技术框架。核心逻辑是先从外部知识库精准检索相关信息,再将其作为上下文输入大模型生成回答。技术上依赖检索引擎(如向量数据库、BM25)、大语言模型(如 GPT、LLaMA)及数据预处理技术。通过检索增强,解决大模型知识滞后、幻觉问题,提升回答准确性。应用广泛,涵盖智能客服、医疗问答、法律检索、教育辅导等场景,能基于特定领域知识提供精准、可控的生成内容。
wow-RAG 是 Datawhale 推出的 RAG 技术实践项目,网址:datawhalechina/wow-rag: A simple and trans-platform rag framework and tutorial https://github.com/datawhalechina/wow-rag
环境配置与模型初始化
import os
from dotenv import load_dotenv# 加载环境变量
load_dotenv()
# 从环境变量中读取api_key
api_key = os.getenv('ZHIPU_API_KEY')
base_url = "https://open.bigmodel.cn/api/paas/v4/"
chat_model = "glm-4-flash"
emb_model = "embedding-2"# 配置对话模型
from llama_index.llms.zhipuai import ZhipuAI
llm = ZhipuAI(api_key = api_key,model = chat_model,
)# 配置嵌入模型
from llama_index.embeddings.zhipuai import ZhipuAIEmbedding
embedding = ZhipuAIEmbedding(api_key = api_key,model = emb_model,
)
emb = embedding.get_text_embedding("你好呀呀")
- 使用 dotenv 库从.env 文件加载环境变量,安全管理 API 密钥
- 初始化智谱 AI 的聊天模型 (GLM-4-Flash) 和嵌入模型 (embedding-2)
- 测试嵌入模型的功能,生成文本 "你好呀呀" 的向量表示
文档处理与索引构建
# 从指定文件读取,输入为List
from llama_index.core import SimpleDirectoryReader,Document
documents = SimpleDirectoryReader(input_files=['./docs/大模型推理.txt']).load_data()
# 构建向量索引
from llama_index.core import VectorStoreIndex
#index = VectorStoreIndex.from_documents(documents,embed_model=embedding)
# 想要看到进度条的话,加一个参数 show_progress=True
index = VectorStoreIndex.from_documents(documents,embed_model=embedding,show_progress=True)
流式查询引擎
response_stream = query_engine.query("请写一篇1000字的文章论述大模型推理的技术细节")
for text in response_stream.response_gen:print(text,end="")
构建查询引擎后发起关于 “大模型推理技术细节” 的查询,系统会先将问题向量与索引中的文档向量比对,找到最相关的参考内容,再结合这些信息让大模型生成回答。通过流式响应(response_stream),模型生成的内容会按片段实时返回,循环打印每个片段即可实现 “边生成边显示” 的效果
输出:
大模型推理:技术细节解析随着人工智能技术的飞速发展,大模型(Large Language Model)在自然语言处理领域取得了显著的成果。大模型能够处理复杂的语言问题,为用户提供了便捷、智能的服务。本文将从技术细节的角度,对大模型推理进行探讨。一、大模型推理概述大模型推理是指在大规模语言模型的基础上,利用模型对特定语言任务进行预测和决策的过程。在大模型推理过程中,需要关注以下几个关键技术细节:1. 推理过程大模型推理过程主要包括以下步骤:(1)输入处理:将输入文本转化为模型可理解的格式,如分词、词性标注、句法分析等。(2)特征提取:通过特征提取技术,将输入文本中的有用信息提取出来,供模型进行推理。(3)模型推理:将提取的特征输入到训练好的大模型中,得到预测结果。(4)结果输出:将模型预测结果输出给用户。2. 推理速度大模型推理速度是影响实际应用效果的重要因素。为了提高推理速度,可以采用以下技术:(1)模型压缩:通过模型压缩技术,降低模型参数量和计算复杂度,从而加快推理速度。(2)推理加速:利用硬件加速器(如GPU、TPU)进行推理计算,提高推理速度。(3)量化技术:对模型参数进行量化处理,降低数据精度,从而加快推理速度。二、大模型推理中的关键技术1. 特征提取特征提取是影响大模型推理效果的关键环节。以下是一些常见的特征提取技术:(1)词袋模型:将文本分解为单词或字符,统计其在文档中的出现频率,构建词袋模型。(2)TF-IDF:结合词袋模型和逆文档频率,对特征进行加权,提高特征的重要性。(3)Word2Vec:将文本中的单词映射为固定维度的向量,保留语义信息。2. 思维链(CoT)思维链是一种用于指导大模型推理的技术,它将问题拆解为一系列更小的步骤。以下是思维链的几个关键点:(1)将问题分解:将复杂问题分解为一系列简单、可处理的问题。(2)推理步骤:在思维链中,每一步都对应一个推理步骤,逐步解决问题。(3)结构化推理:将推理过程结构化,使大模型能够更好地理解问题和答案。3. 测试时计算扩展测试时计算扩展是指在推理阶段增加计算量,以提高模型性能。以下是测试时计算扩展的关键技术:(1)长度扩展:增加推理过程中生成的中间结果,提高模型推理能力。(2)样本扩展:增加测试数据量,使模型在更多场景下具有更好的性能。(3)模型扩展:通过改进模型结构或参数,提高模型在特定任务上的表现。三、案例分析:DeepSeek-R1DeepSeek-R1是一种基于思维链的推理型大模型。以下是其技术细节:1. 数据集:DeepSeek-R1使用了80万个高质量数据样本,包括60万个推理示例和20万个非推理示例。2. 模型训练:学生模型通过对比自身输出和教师模型输出,学习DeepSeek-R1的推理方式。3. 推理结果:DeepSeek-R1在多个推理任务上取得了优异的成绩,验证了其推理能力。总之,大模型推理技术在自然语言处理领域具有广泛的应用前景。通过对推理过程、特征提取、思维链和测试时计算扩展等关键技术的深入研究,可以有效提高大模型的推理性能,为用户带来更优质的体验。
FastAPI 流式 API 服务
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse
import threadingapp = FastAPI()
app.add_middleware(CORSMiddleware,allow_origins=["*"])# 新增服务器控制相关代码
_server_thread = Nonedef run_server():config = uvicorn.Config(app, host='0.0.0.0', port=5000)server = uvicorn.Server(config)server.run()def start_server():"""启动后台服务"""global _server_threadif not _server_thread or not _server_thread.is_alive():_server_thread = threading.Thread(target=run_server, daemon=True)_server_thread.start()print("服务已启动:http://localhost:5000/stream_chat")@app.get('/stream_chat')
async def stream_chat(param:str = "你好"):async def generate(): response_stream = query_engine.query(param)for text in response_stream.response_gen:yield textreturn StreamingResponse(generate(), media_type='text/event-stream')# 在Notebook中直接调用启动服务
start_server()
uvicorn作为 ASGI 服务器用于运行 FastAPI 应用,FastAPI构建 Web 服务,CORSMiddleware处理跨域请求,StreamingResponse支持流式响应。
通过 GET 请求接收用户查询参数param,利用异步生成器generate从query_engine获取流式响应,并通过StreamingResponse以text/event-stream格式向客户端推送文本片段,实现实时聊天效果。
# 调用服务
import requestsdef test_stream_chat(question="你好"):url = "http://localhost:5000/stream_chat"params = {"param": question}with requests.get(url, params=params, stream=True) as response:for chunk in response.iter_content(decode_unicode=True):if chunk:print(chunk, end="", flush=True)# 调用示例
test_stream_chat("大模型推理就业前景如何?")
输出:
大模型推理作为人工智能领域的一个重要分支,其就业前景相当广阔。随着人工智能技术的不断发展,对于具备大模型推理能力的人才需求日益增长。以下是大模型推理就业前景的一些方面:1. **技术需求增加**:随着企业对智能化的需求提升,大模型推理技术能够帮助解决复杂问题,提高工作效率,因此相关技术人才需求旺盛。2. **多行业应用**:大模型推理在金融、医疗、教育、交通等多个行业中都有广泛应用,这为从业者提供了多样化的就业选择。3. **研究与发展岗位**:在高校、研究机构和企业中,都需要从事大模型推理相关的研究与开发工作,这些岗位对人才的要求较高,但同时也提供了较高的薪资和职业发展空间。4. **产品与解决方案**:随着大模型推理技术的商业化,市场上对于能够将技术转化为实际产品或解决方案的人才需求也在增加。5. **数据与算法工程师**:大模型推理依赖于高质量的数据和高效的算法,因此数据工程师和算法工程师在这一领域具有很高的就业前景。6. **教育与培训**:随着人工智能教育的普及,对于能够教授大模型推理相关课程的专业人才也有较大需求。综上所述,大模型推理领域的就业前景是积极的,但同时也需要从业者不断学习新知识,提升自己的技术能力和解决问题的能力。
参考文章
https://github.com/datawhalechina/wow-raghttps://github.com/datawhalechina/wow-rag