news 2026/4/23 15:44:42

06-FAISS向量数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
06-FAISS向量数据库

①.基于 FAISS(Facebook 开源的高效向量检索库)和 LangChain 构建的中文文本向量检索系统,核心功能是将文本数据向量化后存入 FAISS 向量库,并实现相似性检索。

1.安装FAISS

pip install faiss-cpu,也可以是gpu,看具体使用情况

2.实现代码

import faiss from langchain_community.docstore import InMemoryDocstore from langchain_community.vectorstores import FAISS from langchain_huggingface import HuggingFaceEmbeddings from langchain_core.documents import Document model_name = "BAAI/bge-large-zh-v1.5" model_kwargs = {'device': 'cpu'} encode_kwargs = {'normalize_embeddings': True} # set True to compute cosine similarity bge_hf_embedding = HuggingFaceEmbeddings( model_name=model_name, model_kwargs=model_kwargs, encode_kwargs=encode_kwargs, ) #1.初始化数据库 #先创建索引 #向量维度 index=faiss.IndexFlatL2(1024) vector_store=FAISS( embedding_function=bge_hf_embedding, index=index, docstore=InMemoryDocstore(), index_to_docstore_id={} ) # 2、 准备数据(Document) #page_content里面的数据必须经过向量化,不需要向量化的数据放在metadata document_1 = Document( page_content="今天早餐我吃了巧克力薄煎饼和炒蛋。", metadata={"source": "tweet", "time": "上午"}, ) document_2 = Document( page_content="明天的天气预报是阴天多云,最高气温62华氏度。", metadata={"source": "news"}, ) document_3 = Document( page_content="正在用LangChain构建一个激动人心的新项目——快来看看吧!", metadata={"source": "tweet"}, ) document_4 = Document( page_content="劫匪闯入城市银行,盗走了100万美元现金。", metadata={"source": "news"}, ) document_5 = Document( page_content="哇!那部电影太精彩了,我已经迫不及待想再看一遍。", metadata={"source": "tweet"}, ) document_6 = Document( page_content="新iPhone值得这个价格吗?阅读这篇评测一探究竟。", metadata={"source": "website"}, ) document_7 = Document( page_content="当今世界排名前十的足球运动员。", metadata={"source": "website"}, ) document_8 = Document( page_content="LangGraph是构建有状态智能体应用的最佳框架!", metadata={"source": "tweet"}, ) document_9 = Document( page_content="由于对经济衰退的担忧,今日股市下跌500点。", metadata={"source": "news"}, ) document_10 = Document( page_content="我有种不好的预感,我要被删除了 :(", metadata={"source": "tweet"}, ) documents = [ document_1, document_2, document_3, document_4, document_5, document_6, document_7, document_8, document_9, document_10, ] ids=['id'+str(i+1) for i in range(len(documents))] vector_store.add_documents(documents,ids=ids) #把数据库写入磁盘 vector_store.save_local('../faiss_db') #语言检索 resp=vector_store.similarity_search('今天的投资建议',2) for i in resp: print(i.page_content) print(type(i))

输出:

左边的文件栏也会出现保存的数据库:

②.从保存的向量数据库中进行检索

from langchain_community.docstore import InMemoryDocstore from langchain_community.vectorstores import FAISS from langchain_core.embeddings import Embeddings from sentence_transformers import SentenceTransformer from langchain_core.documents import Document import faiss class CustomQwen3Embeddings(Embeddings): ''' 定义一个Qwen3的Embedding和lang'chain整合的类 ''' def __init__(self,model_name): self.qwen3_embedding = SentenceTransformer(model_name) #输入的问题向量化 def embed_query(self, text: str) -> list[float]: return self.embed_documents([text])[0] #文本内容向量化 def embed_documents(self, texts: list[str]) -> list[list[float]]: return self.qwen3_embedding.encode(texts) qwen3=CustomQwen3Embeddings('Qwen/Qwen3-Embedding-0.6B') #加载数据库 vector_store=FAISS.load_local('../faiss_db',embeddings=qwen3,allow_dangerous_deserialization=True) resp = vector_store.similarity_search_with_score('有美食的内容吗', k=4, filter={"source": 'tweet'}) # 带分数 for i,score in resp: print(type(i)) print(i) print(i.id) print(f"{score:3f}")

输出:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:25:38

ANT 设备(骑行台 FE-C 场景)开发的重点与难点全解析

ANT 设备开发(尤其骑行台 FE-C 协议适配)的核心是“协议标准化 射频稳定性 多主机兼容”,其中 “重点” 是必须做对的核心环节(错则设备无法工作),“难点” 是易踩坑、需平衡多维度需求的复杂环节&#x…

作者头像 李华
网站建设 2026/4/23 12:33:54

Qwen3-14B本地部署指南:从下载到AI代理实战

Qwen3-14B本地部署实战:从模型获取到AI代理构建 在金融、法律、政务这些对数据安全要求极高的领域,一个现实问题正变得越来越紧迫:我们能否拥有一个既强大又可控的AI系统?它不仅能理解复杂的业务逻辑,还能在内网环境中…

作者头像 李华
网站建设 2026/4/23 12:34:18

LobeChat能否举办黑客松?激发创新应用场景

LobeChat:为何它天生适合成为黑客松的创新引擎? 在AI技术飞速落地的今天,一个值得深思的问题浮现出来:我们是否还需要从零开始构建每一个AI应用? 面对GPT、Llama、通义千问等大模型日益强大的能力,真正的…

作者头像 李华
网站建设 2026/4/23 5:52:25

LangFlow流编辑器深度解析:可视化编排核心机制

LangFlow流编辑器深度解析:可视化编排核心机制 在大模型应用开发日益普及的今天,如何快速构建、调试和迭代复杂的 LLM 工作流,成为开发者面临的核心挑战。传统方式依赖大量胶水代码连接组件——LLM、提示词模板、工具调用、向量存储……每一…

作者头像 李华
网站建设 2026/4/23 12:53:51

LobeChat能否对接SpaceX API?火箭发射追踪与科普问答

LobeChat能否对接SpaceX API?火箭发射追踪与科普问答 在智能对话系统日益普及的今天,用户不再满足于模型“凭记忆回答问题”——他们希望AI能像搜索引擎一样,实时获取最新信息。比如当有人问:“SpaceX最近一次发射成功了吗&#…

作者头像 李华
网站建设 2026/4/23 9:53:34

撞库攻击再现:第三位DraftKings黑客认罪揭示认证安全短板

第三位DraftKings黑客认罪 严重性:中等 类型:漏洞 一名黑客承认对梦幻体育和博彩平台DraftKings进行了撞库攻击。撞库攻击是指自动化地尝试使用从其他数据泄露事件中窃取的用户名-密码对来获取未经授权的访问。这种攻击方法利用了用户在多个网站重复使用…

作者头像 李华