当前位置: 首页 > wzjs >正文

做网站的结论与心得软件开发工程师分类

做网站的结论与心得,软件开发工程师分类,广州网站建设推荐,河南和城乡建设厅网站1. 带过滤的相似性搜索 大多数向量数据库不仅可以存储向量数据,还支持存储相关元数据。这些元数据可以包括文本原文、扩展信息、页码、文档 ID、作者、创建时间等自定义信息,通常用于实现数据检索。 向量数据库记录 向量(vector)元数据(metadata)id遗…

1. 带过滤的相似性搜索

大多数向量数据库不仅可以存储向量数据,还支持存储相关元数据。这些元数据可以包括文本原文扩展信息页码文档 ID作者创建时间等自定义信息,通常用于实现数据检索。

向量数据库记录 = 向量(vector)+元数据(metadata)+id

遗憾的是,Faiss 原生并不支持过滤功能,因此在 LangChain 封装的 FAISS 中对此进行了处理。首先,获取比所需结果数 k 更多的结果(默认为 20 条),然后在这些结果中进行初步搜索,接着对搜索得到的结果进行过滤,最终得到符合条件的 k 条结果,从而实现带过滤的相似性搜索。

Faiss 的搜索主要基于元数据进行。执行带过滤的相似性搜索非常简单,只需在搜索时传递 filter 参数即可。filter 可以是一个元数据字典,也可以是一个接收元数据字典作为参数并返回布尔值的函数。

例如,以下代码仅检索页码大于 5 的文档:

import dotenv
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddingsdotenv.load_dotenv()embedding = OpenAIEmbeddings(model="text-embedding-3-small")texts: list = ["笨笨是一只很喜欢睡觉的猫咪","我喜欢在夜晚听音乐,这让我感到放松。","猫咪在窗台上打盹,看起来非常可爱。","学习新技能是每个人都应该追求的目标。","我最喜欢的食物是意大利面,尤其是番茄酱的那种。","昨晚我做了一个奇怪的梦,梦见自己在太空飞行。","我的手机突然关机了,让我有些焦虑。","阅读是我每天都会做的事情,我觉得很充实。","他们一起计划了一次周末的野餐,希望天气能好。","我的狗喜欢追逐球,看起来非常开心。",
]
metadatas: list = [{"page": 1},{"page": 2},{"page": 3},{"page": 4},{"page": 5},{"page": 6},{"page": 7},{"page": 8},{"page": 9},{"page": 10},
]
db = FAISS.from_texts(texts, embedding, metadatas)print(db.index_to_docstore_id)
print(db.similarity_search_with_score("我养了一只猫,叫笨笨", filter=lambda x: x["page"] > 5))

输出结果:

{0: '452f290d-3afa-4989-a168-2d222a92093e', 1: '71bc9dcf-751c-4e65-9b61-5003c43c8474', 2: '66a7bc83-df40-4036-b7c3-1b747ca4ee98', 3: '829e5148-139b-4185-95c1-341681d6ca5a', 4: '24038a82-a083-4ec5-99cd-adaf81036f98', 5: 'b0f16e08-8cf3-4f08-87fb-d635604dee82', 6: '668e6593-5f2c-4f86-95ff-93cf679e05a7', 7: '9c6359ae-42c4-438e-bcf0-d35037c857e4', 8: '7f2c926e-d390-46f8-8485-6685c898bc45', 9: 'b347b82e-ec1a-4583-baa8-61d5f68e92a0'}
[(Document(page_content='我的狗喜欢追逐球,看起来非常开心。', metadata={'page': 10}), 1.3836973), (Document(page_content='我的手机突然关机了,让我有些焦虑。', metadata={'page': 7}), 1.5533546), (Document(page_content='阅读是我每天都会做的事情,我觉得很充实。', metadata={'page': 8}), 1.5989475), (Document(page_content='他们一起计划了一次周末的野餐,希望天气能好。', metadata={'page': 9}), 1.7179501)]

2. 资料推荐

  • 💡大模型中转API推荐
  • ✨中转使用教程

3. 删除指定数据

Faiss 中,支持删除向量数据库中特定的数据,目前仅支持传入数据条目 id 进行删除,并不支持条件筛选(但是可以通过条件筛选找到符合的数据,然后提取 id 列表,然后批量删除)。
代码示例:

print("删除前数量:", db.index.ntotal)
# 获取向量数据库的索引id列表信息
db.delete([db.index_to_docstore_id[0]])
print("删除后数量:", db.index.ntotal)

输出结果:

删除前数量: 10
删除后数量: 9

4 保存和加载本地数据

除了从文本和文档列表中加载数据到向量数据库,Faiss 还支持将整个数据库持久化到本地文件,亦或者从本地文件一键加载数据,这样就不需要在每次使用向量数据库的时候重新创建,可以极大提升向量数据库的使用效率,两个方法如下:

资料推荐

  • 💡大模型中转API推荐

  • ✨中转使用教程

  • save_local():将向量数据库持久化到本地,传递 folder_pathindex 分别代表文件夹路径索引名字

  • load_local():将本地的数据加载到向量数据库,传递 folder_pathembeddingsindex 分别代表文件夹路径嵌入模型索引名字

代码示例:

db.save_local("./vector-store/")
new_db = FAISS.load_local("./vector-store/", embedding, allow_dangerous_deserialization=True)
docs = new_db.similarity_search("我养了一只猫,叫笨笨")

输出结果:

[Document(page_content='笨笨是一只很喜欢睡觉的猫咪', metadata={'page': 1}), Document(page_content='猫咪在窗台上打盹,看起来非常可爱。', metadata={'page': 3}), Document(page_content='我的狗喜欢追逐球,看起来非常开心。', metadata={'page': 10}), Document(page_content='我的手机突然关机了,让我有些焦虑。', metadata={'page': 7})]
http://www.dtcms.com/wzjs/581828.html

相关文章:

  • 网站建设手续手机商城下载app
  • 短租网站开发seo个人优化方案案例
  • 网站推广 教程舟山普陀区建设局网站
  • 网站建设合同制人员招聘肇庆网络
  • 免费自助建站系统大全seo网络运营
  • 六盘水网站建设冷水滩城乡建设局网站
  • 帝国做的网站打开速度登录浏览器是建设银行移动门户网站
  • 桐庐县建设局网站大连网络运营
  • 河北建设集团石家庄分公司百度seo发帖推广
  • 南昌网站建设哪家最好页游代理
  • 做现货去哪些网站营销好呢东圃做网站公司
  • 帝国cms建站实例教程网络推广工作描述
  • 网站开发语言有哪几种广州外贸网络推广
  • 网站建设课程 谷建如何设计的英文网站
  • 企业网站设计与建设苏州网站制作哪家好
  • 南山网站多少钱网站备案号在哪里看
  • 山东城市建设职业学院图书馆网站开发公司自平衡
  • 网站设计怎么做背景颜色用织梦做的手机网站怎么才能和电脑同步
  • Asp网站开发入门wordpress用户注册提醒
  • 怎么给网站做关键词搜索服务器网站绑定域名
  • 个人建立一个网站要多少钱wordpress 速度很慢
  • 进qq空间上面没有网站广西建设网查询
  • 个人网站免费源码大全创建学校网站吗
  • 网站建设若干意见电商系统平台开发
  • 山西企业建站系统平台网络综合设计实验报告
  • 易县网站建设免费销售管理系统软件
  • 湖南网站建设的公司排名全球最大的平面设计网站
  • php网站建设素材做网站用方正字体可以额的
  • 做网站暴利赚钱中国建设银行电脑版
  • 常用网站如何在桌面做快捷方式群晖装wordpress