面向 Java 开发者的 Python 快速实用指南:探索向量数据库中的文本搜索

发布于:2024-10-24 编辑:匿名 来源:网络

前言 如果按照我的节奏学习 Python,我觉得日常开发不会有太大问题。不过,由于我没有Python开发经验,所以我就思考我应该写什么。

回忆起学习Java时的学习路线。直接操作数据库是重要内容之一。

无论使用哪种编程语言,与数据库的交互都是不可避免的。不过,直接操作MySQL数据库似乎没什么意思,毕竟我每天都在写SQL语句。

突然想到之前写过的一系列私有知识库文章,于是就想到了向量数据库。毕竟这是目前非常流行的技术之一。

如果AI离开了矢量数据库,就等于失去了灵魂。市场上有许多矢量数据库产品。

我选择的是腾讯最近推出的矢量数据库,而且还有免费试用卡。在到期之前,我决定写一些相关的文章。

我看了一下,这个数据库对于新手来说非常友好,因为它有可视化界面。对于新手来说,能够看到实际效果才是最客观的。

就像我刚学 SQL 的时候,如果没有可视化工具 Navicat,我会感到力不从心。矢量数据库矢量数据库能够将复杂的非结构化数据转换为多维逻辑坐标值。

简而言之,它可以将我们所知道的一切转化为可计算的数字。一旦数据进入数学领域,我们就可以对其进行计算。

此外,矢量数据库还可以作为外部知识库,为大型模型提供最新、最全面的信息,以便及时回答需要回答的问题。同时,还可以赋予大型语言模型长期记忆能力,避免对话过程中出现“碎片”。

可以说,向量数据库是大型语言模型的最佳拍档。如果您对任何内容有疑问,请点击下面的官方文档链接查看更多信息: Studio code run import tcvectordbfrom tcvectordb.model.enum import FieldType, IndexType, MetricType, ReadConsistency#create a database client objectclient = tcvectordb.VectorDBClient (url =' username='root', key='1*****', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)# 创建数据库db = client.create_database(database_name='db-xiaoyu') print( db.database_name)# listdatabasesdb_list = client.list_databases()for db in db_list: print(db.database_name)好了,我们现在开始替换所需的内容,完成数据库的创建。

创建数据库后,我们还需要创建集合,而不是传统的表,因为在矢量数据库中它们被称为集合。因此,我们接下来将创建该集合。

创建集合 创建集合的过程与创建表类似,但前提是集合需要存储向量,而表用于存储数据。在这里,我们选择使用具有集成嵌入的集合。

如果不使用集成嵌入,则需要使用其他嵌入模型来输出向量,然后将其输入到集合中进行存储。除非您想手动输入向量值,否则这是必要的。

当使用向量对应的文本字段设计索引(不是Collection的结构)时,不建议创建索引。这样做会占用大量的内存资源,并且没有实际效果。

除了向量对应的文本字段之外,如果需要进行业务过滤,即查询中需要使用where条件,那么就必须为这个条件字段单独定义一个索引。也就是说,你需要使用哪个字段来进行过滤,就必须为该字段定义一个索引。

Vector数据库支持动态模式(Schema),写入数据时可以写入任意字段,无需提前定义,类似于MongoDB。目前主键id和向量字段向量是固定且必需的,字段名称也必须一致,否则会报错。

之前解释私有知识库的时候,我会单独介绍其他的嵌入模型,因为向量数据库并没有继承这些模型。不过,腾讯已经将嵌入模型集成到了他们的系统中,所以不需要来回寻找模型。

需要注意的是,为了保证一致性,你选择的嵌入模型背后的向量场必须设置为维度。代码语言:python 代码运行次数:0 复制Cloud Studio代码运行 db = client.database('db-xiaoyu')# --index configindex = Index( FilterIndex(name='id', field_type=FieldType.String, index_type= IndexType.PRIMARY_KEY)、VectorIndex(name='向量'、dimension=、index_type=IndexType.HNSW、metric_type=MetricType.COSINE、params=HNSWParams(m=16、efconstruction=))、FilterIndex(name='作者' , field_type =FieldType.String, index_type=IndexType.FILTER), FilterIndex(name='bookName', field_type=FieldType.String, index_type=IndexType.FILTER))# 嵌入 configebd = Embedding(vector_field='vector', field=' text' , model=EmbeddingModel.BGE_BASE_ZH)# 创建集合coll = db.create_collection( name='book-xiaoyu', shard=1,replicas=0, description='这是测试嵌入的集合', embedding=ebd, index= index)print(vars(coll)) 我们已经成功创建了数据库和集合,现在让我们看一下它们事实上,它们的结构与MySQL等数据库类似,只是存储的内容和术语发生了变化。

我们可以将其视为数据库操作。 image插入/替换数据 插入数据时,如果集合中已存在相同ID的文档,则删除原文档并插入新的文档数据。

需要注意的是,我们没有指定很多字段,例如页面、文本等。您可以继续添加这些字段,因为它们与 MongoDB 类似。

但请注意,文本字段必须与您配置嵌入时指定的字段相同,否则无法转换为向量。代码语言:python 代码运行次数:0 复制Cloud Studio代码运行 coll = db.collection('book-emb')# 写入数据。

# 参数build_index为True,表示写入数据的同时重新创建索引。 res = coll.upsert(documents=[ Document(id='', text="讲到世界大势,分久必团结,久合必团结”必须分。

",author='罗贯中', bookName='三国演义', page=21), Document(id='', text="混沌不分,天下混沌,无有天下第一。",author='吴承恩',bookName='西游记',page=22),Document(id='',text="甄世隐梦中有通灵知识,贾雨村是",author='曹雪芹', bookName='红楼梦', page=23)], build_index=True) 当我们完成数据插入后,我们可以立即执行查询操作。

但请注意,如果将“build_index”字段设置为“false”,即使插入成功,查询时也无法检索到数据。因此,如果希望它立即生效并且能够查询数据,则必须将其设置为“true”。

这就是重建索引的过程。这里查询数据可以分为两种:精准查询和相似度查询。

精确查询是指除矢量字段之外的其他字段的查询条件完全匹配。由于我们在索引的时候已经索引了作者(author)和书名(bookName),所以我们可以直接对其进行数据过滤,不过这里我就不演示了。

下面我演示一个模糊查询,即对向量字段进行匹配后查询结果,同时添加过滤条件。代码语言:python 代码运行次数:0 复制Cloud Studio代码并运行 doc_lists = coll.searchByText( embeddingItems=['世界大势是分久必合,分久必合团结久了,就会分'], filter=Filter(Filter.In("bookName", ["《三国演义》,《西游记》])), params=SearchParams(ef= ), limit=3,retrieve_vector=False, # 不返回向量 output_fields=['bookName','author'] )# printffor i, docs in enumerate(doc_lists.get("documents")): for doc in docs: print(doc) 除了上面提到的Python写法之外,我们还可以通过接口进行精确查询,只需在接口中的where后面填写条件即可,对图像进行模糊查询,可以直接使用文本来查询,或者定义过滤字段进行查询优化 图片总结 删除数据的剩余部分我就不演示了,今天我们来熟悉一下矢量数据库的界面操作。

感觉就像用Kibana查询ES数据一样。不知道你是否也有类似的感受。

好吧,今天我们只关注文本操作。下次我会尝试处理图像或视频数据。

总的来说,Python的SDK比Java用起来更舒服。如果你曾经使用过Java SDK与平台接口对接过,你会发现Python SDK上手速度更快。

面向 Java 开发者的 Python 快速实用指南:探索向量数据库中的文本搜索

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 钱投六年投资网络安全产业版图

    钱投六年投资网络安全产业版图

    今年是《网络安全法》实施六周年。 近年来,国家陆续颁布实施了《信息安全技术网络安全等级保护基本要求》(分级保护2.0)、《密码法》、《网络安全审查办法》、《数据安全法》、《关键信息基础设施安全保护条例》(管集条例)、《个人信息保护法》、 《数据出境安全评估办法

    06-17

  • 台积电计划在日本第二工厂生产 6 纳米芯片

    台积电计划在日本第二工厂生产 6 纳米芯片

    日经亚洲 有报道称,领先的芯片代工厂台积电计划在日本建造的第二工厂生产 6 纳米芯片。 这些芯片将在台积电计划在日本西南部熊本市建造的新工厂生产。 总投资预计为2万亿日元(1亿美元),日本经济产业省正在考虑提供约1亿日元的资金。 该芯片将是该国制造的最先进的半导体

    06-06

  • 微库光电完成数千万元融资

    微库光电完成数千万元融资

    6月5日,深圳市微库光电股份有限公司(以下简称:“微库光电”)宣布完成数千万元融资。 本轮融资由同创伟业出资,创东方投资、清源投资共同投资。 据悉,微酷光电未来计划成为一家基于柔性液晶材料技术的平台公司。 本次战略融资主要用于其无级调光超薄柔性明暗调光液晶膜的

    06-18

  • 马化腾在两会中对互联网+文化的诠释落地在哪里?

    马化腾在两会中对互联网+文化的诠释落地在哪里?

    3月3日,全国两会开幕。 作为人大代表,腾讯董事会主席和首席执行官马化腾在媒体见面会上提出了“推动‘互联网+’落地”的建议,并探讨了互联网+文化。 解释。 马化腾提到,“腾讯也在思考泛娱乐IP的多角度开发,腾讯是国内真正能做好系统、全面的IP开发的。 ”要真正做好,腾

    06-17

  • 海外即时通讯软件:经济全球化的重要推动者

    海外即时通讯软件:经济全球化的重要推动者

    .wp-block-column h3{margin-left:0} 当今世界,经济全球化已成为不可逆转的趋势,极大地促进了各国之间的经济交流与合作两国。 在此过程中,海外即时通讯软件发挥着至关重要的作用,为企业和个人提供了高效、便捷的沟通方式,有效推动了经济全球化进程。 本文将深入探讨海外

    06-17

  • 韩媒:韩国OLED产品正在加速“扩张”日本市场

    韩媒:韩国OLED产品正在加速“扩张”日本市场

    虽然日本对本土品牌有着强烈的偏好,但韩国OLED面板和OLED电视在日本市场仍然占据着较高的市场份额。 韩国媒体businesskorea报道称,第二季度LG电子在日本OLED电视市场的市场份额为7.4%。 其市场份额低于日系品牌索尼(35.2%)、松下(26.3%)、夏普(17.1%),但成功跻身前五

    06-08

  • 二手回收交易O2O平台闪回收完成B1轮融资

    二手回收交易O2O平台闪回收完成B1轮融资

    据投资界10月31日消息,据36氪报道,手机后市场综合服务平台闪回收宣布已完成B1轮融资B1轮融资。 投资者及融资金额尚未公布。 据透露,青通资本担任财务顾问独家。 据悉,融资资金将主要用于供应链建设、新产品研发、市场营销等方面。 闪回收成立于2007年,是一家致力于电子数

    06-18

  • 中百罗森获数千万元B轮融资 易凯未来产业基金领投

    中百罗森获数千万元B轮融资 易凯未来产业基金领投

    据投资界1月20日消息,武汉中百便利店有限公司(以下简称“中百便利店”)罗森网)近期完成数千万元B轮融资,本轮融资由易凯未来产业基金领投。 中百罗森是中百集团与日本罗森株式会社(以下简称“日本罗森”)共同打造的便利店品牌。 中百集团是一家以商业零售为主营业务的

    06-18

  • 苹果在中国的首个研发中心,总投资3亿元,位于北京中关村朝阳园区

    苹果在中国的首个研发中心,总投资3亿元,位于北京中关村朝阳园区

    北京中关村园区管委会旗下微信公众号“创新创业中关村”发文称,苹果研发(北京)有限公司近日在北京朝阳区中关村开设了首个研发中心。 公园成立。 据了解,该公司是苹果公司在中国直接投资的第一家研发中心。 苹果研发(北京)有限公司注册资本1亿元人民币,总投资3亿元人民

    06-17

  • 芯赢科技完成600万元Pre-A轮融资,追源创投投资

    芯赢科技完成600万元Pre-A轮融资,追源创投投资

    据投资界10月22日消息,芯赢科技今年8月完成1万元Pre-A轮融资年,投资方为追源创投。 元创投,本轮融资主要用于四个方面,分别是毫米波人体三维成像技术研发、自动目标识别库研发、非合作长效成像技术研发。 远距离实时成像系统,并扩大生产、销售、研发等资源。   芯鹰科

    06-17

  • 移远通信子公司拟出资2000万元设立股权投资基金

    移远通信子公司拟出资2000万元设立股权投资基金

    据投资界9月8日消息,近日,移远通信全资子公司合肥移瑞拟投资1万元作为有限公司,与合伙人等其他11人共同出资设立菏泽桥北景瑞创业投资合伙企业(有限合伙)。 该基金重点投资于具有良好成长性和发展前景的物联网产业链相关优质项目股权,重点投资于具有广阔市场前景、能够实

    06-18

  • 卡布电子已完成近亿元A轮融资,投资方为华润资本、明石资本和施能资本,

    卡布电子已完成近亿元A轮融资,投资方为华润资本、明石资本和施能资本,

    投资界消息,国内高端电阻制造商凯步电子宣布完成近亿元A轮融资。 本轮融资由华润资本、明石资本、动量资本投资。 此次融资资金将主要用于凯步子公司长沙瑞思电子科技的研发投入、产能扩张和人才引进,将自主品牌瑞思电阻的研发和生产能力提升到新的水平。 为了打造高水平团队

    06-18