2026/4/15 11:59:03
网站建设
项目流程
网站页面建设方案书模板,做网站图片存储用什么格式,江西省城乡建设厅网站,网站建设要求GLM-4.7-Flash实战教程#xff1a;RAG增强检索BM25Embedding混合排序优化
1. 模型概述与准备工作
1.1 GLM-4.7-Flash核心特性
GLM-4.7-Flash是智谱AI推出的新一代大语言模型#xff0c;采用MoE#xff08;混合专家#xff09;架构#xff0c;总参数量达300亿。相比传统…GLM-4.7-Flash实战教程RAG增强检索BM25Embedding混合排序优化1. 模型概述与准备工作1.1 GLM-4.7-Flash核心特性GLM-4.7-Flash是智谱AI推出的新一代大语言模型采用MoE混合专家架构总参数量达300亿。相比传统模型它具有以下显著优势高效推理MoE架构仅激活部分参数大幅提升推理速度中文优化针对中文场景深度优化理解和生成能力出色长上下文支持4096 tokens的上下文记忆流式输出响应实时显示无需等待完整生成1.2 环境准备确保已部署GLM-4.7-Flash镜像并启动服务# 检查服务状态 supervisorctl status # 预期输出应包含 # glm_vllm RUNNING # glm_ui RUNNING访问Web界面端口7860确认模型状态显示模型就绪。2. RAG系统基础架构2.1 RAG核心组件RAG检索增强生成系统由三个关键部分组成检索器从知识库中查找相关文档排序器对检索结果进行排序优化生成器基于检索内容生成最终回答2.2 知识库构建准备您的领域知识文档建议格式documents [ { id: doc1, text: GLM-4.7-Flash采用MoE架构..., metadata: {source: 官方文档} }, # 更多文档... ]3. 混合检索排序实现3.1 BM25传统检索BM25是基于词频的经典检索算法适合精确匹配from rank_bm25 import BM25Okapi # 预处理文档 tokenized_docs [doc[text].split() for doc in documents] bm25 BM25Okapi(tokenized_docs) # 执行查询 query GLM-4.7的架构特点 tokenized_query query.split() scores bm25.get_scores(tokenized_query)3.2 Embedding语义检索使用GLM-4.7-Flash生成文本嵌入import requests def get_embedding(text): response requests.post( http://127.0.0.1:8000/v1/embeddings, json{input: text, model: GLM-4.7-Flash} ) return response.json()[data][0][embedding] # 预计算文档嵌入 doc_embeddings [get_embedding(doc[text]) for doc in documents]3.3 混合排序策略结合两种方法的优势from sklearn.preprocessing import MinMaxScaler import numpy as np def hybrid_ranking(query, alpha0.5): # BM25分数 bm25_scores bm25.get_scores(query.split()) # Embedding相似度 query_embedding get_embedding(query) cosine_sims [np.dot(query_embedding, doc_emb) / (np.linalg.norm(query_embedding) * np.linalg.norm(doc_emb)) for doc_emb in doc_embeddings] # 归一化 scaler MinMaxScaler() bm25_normalized scaler.fit_transform(np.array(bm25_scores).reshape(-1, 1)).flatten() sim_normalized scaler.fit_transform(np.array(cosine_sims).reshape(-1, 1)).flatten() # 混合分数 combined_scores alpha * bm25_normalized (1 - alpha) * sim_normalized ranked_indices np.argsort(combined_scores)[::-1] return [(documents[i], combined_scores[i]) for i in ranked_indices]4. 完整RAG流程实现4.1 检索增强生成管道def rag_pipeline(query, top_k3): # 混合检索 ranked_docs hybrid_ranking(query)[:top_k] # 构建提示 context \n\n.join([doc[text] for doc, _ in ranked_docs]) prompt f基于以下上下文回答问题 {context} 问题{query} 回答 # 调用GLM-4.7生成 response requests.post( http://127.0.0.1:8000/v1/chat/completions, json{ model: GLM-4.7-Flash, messages: [{role: user, content: prompt}], temperature: 0.7, max_tokens: 1024 } ) return response.json()[choices][0][message][content]4.2 效果优化技巧权重调整根据场景调整alpha参数0-1之间精确匹配需求高增大alpha接近1语义理解需求高减小alpha接近0分块策略对长文档进行适当分块建议300-500字/块元数据过滤结合文档metadata进行预过滤# 带元数据过滤的检索 def filtered_retrieval(query, sourceNone): docs documents if not source else [ doc for doc in documents if doc[metadata][source] source ] # 后续处理相同...5. 性能优化与扩展5.1 批量处理优化# 批量计算嵌入 def batch_embed(texts, batch_size32): embeddings [] for i in range(0, len(texts), batch_size): batch texts[i:ibatch_size] response requests.post( http://127.0.0.1:8000/v1/embeddings, json{input: batch, model: GLM-4.7-Flash} ) embeddings.extend([item[embedding] for item in response.json()[data]]) return embeddings5.2 缓存机制使用Redis缓存常用查询结果import redis r redis.Redis(hostlocalhost, port6379, db0) def cached_rag(query, expire3600): # 检查缓存 cached r.get(frag:{query}) if cached: return cached.decode() # 未命中则执行RAG result rag_pipeline(query) # 写入缓存 r.setex(frag:{query}, expire, result) return result6. 总结与最佳实践通过BM25与Embedding的混合排序策略我们实现了精确匹配与语义搜索的优势互补。GLM-4.7-Flash强大的生成能力与高效的推理速度使得这套RAG系统能够快速响应用户查询。推荐配置方案通用场景alpha0.5top_k3事实查询alpha0.7top_k5创意生成alpha0.3top_k2持续优化方向引入用户反馈机制优化排序权重实现动态分块策略探索更复杂的重排序模型获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。