
一、文本嵌入Embedding模型向量化一段文本的时候经常用到all-MiniLM-L6-v2它是一个轻量级的文本嵌入Embedding模型专门把文字转成数字向量给RAG做语义检索用。命令行通过cd命令进入Python工程的所在目录再执行下面的模型下载命令可将all-MiniLM-L6-v2保存到本地目录modelscope download --model sentence-transformers/all-MiniLM-L6-v2 --local_dir all-MiniLM-L6-v2接着编写下面的Python代码就表示把指定文本转成数字向量也就是对文本做向量化处理from sentence_transformers import SentenceTransformermodel SentenceTransformer(“./all-MiniLM-L6-v2”)vectors model.encode(“什么是RAG”)二、向量检索库FAISS把文本向量化之后还要找个地方保存向量数据以便后续从数据集中检索知识。FAISS就是一个本地、超快、免费的语义检索工具专门用来在RAG里找“最相似的知识”。Python代码里的FAISS主要完成三件事建立索引、放入知识向量、在用户提问时检索知识如下代码所示import faiss建立索引相当于建了个检索表index faiss.IndexFlatL2(vectors.shape[1])把知识向量放进去index.add(np.array(vectors).astype(“float32”))用户提问 → 检索最相似的1条D, I index.search(…)三、结合all-MiniLM-L6-v2与FAISS实现RAG接下来演示如何使用all-MiniLM-L6-v2与FAISS实现RAG检索功能。在编写Python代码前要先在命令行执行下面的pip安装命令pip install faiss-cpu sentence-transformers然后编写下面的Python检索测试代码from sentence_transformers import SentenceTransformerimport faissimport numpy as np 你的知识库完全不变 knowledge [“什么是AI人工智能AI是一门使机器模拟人类智能的技术。”,“什么是RAGRAG代表检索增强生成通过检索外部知识提升大模型回答准确性。”,“本地RAG消耗Token吗本地RAG不调用云端API不消耗Token完全免费。”,“FAISS是什么FAISS是Facebook开源的向量检索库用于本地高效检索。”,“RAG的作用RAG让大模型能引用外部知识避免胡说八道。”] 加载你本地已有的模型不变 embed_model SentenceTransformer(“./all-MiniLM-L6-v2”, device“cpu”)生成向量把知识库向量化vectors embed_model.encode(knowledge)构建 FAISS 索引index faiss.IndexFlatL2(vectors.shape[1])index.add(np.array(vectors).astype(“float32”)) RAG 检索逻辑不变 def rag(question):print(“\n 问题” question)# 把问题向量化q_vec embed_model.encode([question])# 从 FAISS 检索对应的知识D, I index.search(np.array(q_vec).astype(“float32”), 1)best knowledge[I[0][0]]answer best.split(“”)[-1]print( 答案 answer)print(“-” * 50) 运行 ifname “main”:print(“ 本地智能 RAG 系统问什么答什么 ”)while True:q input(“\n请输入问题q退出”)if q.lower() “q”:breakrag(q)运行上面的Python代码根据提示输入问题“什么是FAISS”输出日志结果如下 本地智能 RAG 系统问什么答什么 请输入问题q退出什么是FAISS问题什么是FAISS答案FAISS是Facebook开源的向量检索库用于本地高效检索。