图书搜索领域重大突破!用Apache SeaTunnel、Milvus和OpenAI提高书名相似度搜索精准度和效率
时间:2023-06-27 06:46:45来源:博客园

作者 | 刘广东,Apache SeaTunnel Committer

背景

目前,现有的图书搜索解决方案(例如公共图书馆使用的解决方案)十分依赖于关键词匹配,而不是对书名实际内容的语义理解。因此会导致搜索结果并不能很好地满足我们的需求,甚至与我们期待的结果大相径庭。这是因为仅仅依靠关键词匹配是不够的,因为它无法实现语义理解,也就无法理解搜索者真正的意图。


【资料图】

那么,有更好的方法可以让我们更加准确、高效地进行图书搜索吗?答案是有!本文中,我将介绍如何结合使用Apache SeaTunnel、Milvus和OpenAI进行相似度搜索,实现对整个书名的语义理解,从而让搜索结果更加精准。

使用训练有素的模型来表示输入数据被称为语义搜索,这种方法可以扩展到各种不同的基于文本的用例,包括异常检测和文档搜索。因此,本文所介绍的技术可以为图书搜索领域带来重大的突破和影响。

接下来我来简单介绍几个与本文相关的概念和用到的工具/平台,便于大家更好地理解本文。

什么是Apache SeaTunnel

Apache SeaTunnel是一个开源的、高性能的、分布式的数据管理和计算平台。它是由Apache基金会支持的一个顶级项目,能够处理海量数据、提供实时的数据查询和计算,并支持多种数据源和格式。SeaTunnel的目标是提供一个可扩展的、面向企业的数据管理和集成平台,以满足各种大规模数据处理需求。

什么是Milvus

Milvus是一个开源的类似向量搜索引擎,它支持海量向量的存储、检索和相似度搜索,是一个针对大规模向量数据的高性能、低成本的解决方案。Milvus可以在多种场景下使用,如推荐系统、图像搜索、音乐推荐和自然语言处理等。

什么是OpenAI

ChatGPT是一种基于GPT(Generative Pre-trained Transformer)模型的对话生成系统,是由OpenAI开发的。该系统主要使用了自然语言处理、深度学习等技术,可以生成与人类对话相似的自然语言文本。ChatGPT的应用范围很广,可以用于开发智能客服、聊天机器人、智能助手等应用程序,也可以用于语言模型的研究和开发。近年来,ChatGPT已经成为了自然语言处理领域的研究热点之一。

什么是LLM(Large Language Model)

大语言模型(Large Language Model)是一种基于深度学习技术的自然语言处理模型,它可以对一段给定的文本进行分析和理解,并生成与之相关的文本内容。大语言模型通常使用深度神经网络来学习自然语言的语法和语义规则,并将文本数据转换为连续向量空间中的向量表示。在训练过程中,大语言模型利用大量的文本数据来学习语言模式和统计规律,从而可以生成高质量的文本内容,如文章、新闻、对话等。大语言模型的应用领域非常广泛,包括机器翻译、文本生成、问答系统、语音识别等。目前,许多开放源代码深度学习框架都提供了大语言模型的实现,如TensorFlow、PyTorch等。

教程

重点来了!我将展示如何将Apache SeaTunnel、OpenAI的Embedding API与我们的矢量数据库结合使用,来通过语义搜索整个书名。

准备步骤

在实验之前,我们需要去官网获取一个OpenAI的token,然后在去部署一个Milvus的实验环境。我们还需要准备好将用于这个例子的数据。你可以从这里下载数据。

通过SeaTunnel将数据导入Milvus首先,将book.csv放到/tmp/milvus_test/book下,然后配置任务配置为milvus.conf并放到config下。请参考快速使用指南。

env {  # You can set engine configuration here  execution.parallelism = 1  job.mode = "BATCH"  checkpoint.interval = 5000  #execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"}source {  # This is a example source plugin **only for test and demonstrate the feature source plugin**  LocalFile {    schema {      fields {        bookID = string        title_1 = string        title_2 = string      }    }    path = "/tmp/milvus_test/book"    file_format_type = "csv"  }}transform {}sink {  Milvus {    milvus_host = localhost    milvus_port = 19530    username = root    password = Milvus    collection_name = title_db    openai_engine = text-embedding-ada-002    openai_api_key = sk-xxxx    embeddings_fields = title_2  }}

执行如下命令:

./bin/SeaTunnel.sh --config ./config/milvus.conf -e local

查看数据库中数据,可以看到已经有数据写入进去。

然后使用如下代码通过语义搜索书名:

import jsonimport randomimport openaiimport timefrom pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utilityCOLLECTION_NAME = "title_db"  # Collection nameDIMENSION = 1536  # Embeddings sizeCOUNT = 100  # How many titles to embed and insert.MILVUS_HOST = "localhost"  # Milvus server URIMILVUS_PORT = "19530"OPENAI_ENGINE = "text-embedding-ada-002"  # Which engine to useopenai.api_key = "sk-******"  # Use your own Open AI API Key hereconnections.connect(host=MILVUS_HOST, port=MILVUS_PORT)collection = Collection(name=COLLECTION_NAME)collection.load()def embed(text):    return openai.Embedding.create(        input=text,         engine=OPENAI_ENGINE)["data"][0]["embedding"]def search(text):    # Search parameters for the index    search_params={        "metric_type": "L2"    }    results=collection.search(        data=[embed(text)],  # Embeded search value        anns_field="title_2",  # Search across embeddings        param=search_params,        limit=5,  # Limit to five results per search        output_fields=["title_1"]  # Include title field in result    )    ret=[]    for hit in results[0]:        row=[]        row.extend([hit.id, hit.score, hit.entity.get("title_1")])  # Get the id, distance, and title for the results        ret.append(row)    return retsearch_terms=["self-improvement", "landscape"]for x in search_terms:    print("Search term:", x)    for result in search(x):        print(result)    print()

​搜索结果如下:

Search term: self-improvement[96, 0.4079835116863251, "The Dance of Intimacy: A Woman"s Guide to Courageous Acts of Change in Key Relationships"][56, 0.41880303621292114, "Nicomachean Ethics"][76, 0.4309804439544678, "Possession"][19, 0.43588975071907043, "Vanity Fair"][7, 0.4423919916152954, "Knowledge Is Power (The Amazing Days of Abby Hayes: #15)"]Search term: landscape[9, 0.3023473024368286, "The Lay of the Land"][1, 0.3906732499599457, "The Angry Hills"][78, 0.392495334148407, "Cloud Atlas"][95, 0.39346450567245483, "Alien"][94, 0.399422287940979, "The Known World"]

如果我们按照之前的老方法——关键词搜索,书名中必须包含自我提升、提升等关键词;但是提供大模型进行语义级别的理解,则可以检索到更加符合我们需求的书名。比如在上面的例子中,我们搜索的关键词为self-improvement(自我提升),展示的书名《关系之舞:既亲密又独立的相处艺术》、《尼各马可伦理学》等虽然不包含相关关键词,却很明显更加符合我们的要求。可见,我们利用Apache SeaTunnel、Milvus和OpenAI,通过大语言模型的方法,可以实现更加精准的书名相似度搜素,为图书搜索领域带来重大的技术突破,同时对于语义理解也提供了有价值的参考,希望可以给大家带来一些启发。

相关链接https://seatunnel.apache.org/https://openai.com/https://milvus.io/

本文由 白鲸开源 提供发布支持!

标签:

  • 上一篇文章: 天津个人申请摇号指标有什么条件?
  • 下一篇文章: 最后一页
  • 最新
  • 图书搜索领域重大突破!用Apache SeaTunnel、Milvus和OpenAI提高书名相似度搜索精准度和效率

    ![file](https: img2023 cnblogs com other 3195851 202306 3195851-2

  • 天津个人申请摇号指标有什么条件?

    ➤➤天津个人申请摇号指标有什么条件?符合以下条件的个人可以申请增量

  • 全球快资讯:2023端午天气凉电影热,湖南87.8万人走进影院

    2023端午天气凉电影热,湖南87 8万人走进影院

  • 当前信息:开放基金是什么意思?为什么不能买开放式基金?

    开放基金是什么意思?开放式基金也叫共同基金,是指基金成立时,募集

  • 世界快报:《真人快打1》初期试玩报告 主创称必买《街霸6》

    PlayStation官方博客分享了NetherRealm旗下著名血腥暴力格斗游戏《真人

  • 海南自贸港建“土地超市” 企业拿地“不找市长找市场”|天天视点

    过去,找地、拿地是项目落地的堵点,企业“不找市场找市长”,发动各种

  • 今日聚焦!冲击中高端,TATA木门找到了第二增长曲线

    随着社会的发展,人们的需求也在增加,尤其是对家的需求更为明显。

  • 房产税何时开征?房产税纳税期限如何规定?房地产税是从什么时候征收的? 环球最新|环球速讯

    一、房产税是什么房产税是以房屋为征税对象,按房屋的计税余值或租

  • 网络侵权盗版的定义-速讯-焦点关注

    《刑法》第二百一十七条【侵犯著作权罪】以营利为目的,有下列侵犯著作

  • 环球精选!汛前黄河调水调沙启动

    汛前黄河调水调沙启动,主流媒体,山西门户。山西新闻网是经国务院新闻办

  • 每日热文:甘肃一小学多名学生疑遭推搡挤压致伤,家长称讨要康复费受阻

    甘肃白银市会宁县东关小学一名伤情较重的学生家长何先生近日向澎湃新闻

  • 前沿热点:宝山管理中心曹二村开展“多彩端午节 巧手做香囊”端午节主题活动

    鲁中网淄博6月21日讯端午节到来之际,为增进少年儿童对传统文化的了解

  • 环球看热讯:《秀我中国 | 新时代中国乡村志(第四集):千年梯田 十年新生》

    《秀我中国》栏目组来到云南省元阳县实地考察,感受在乡村振兴的大背景

  • 天天新资讯:查理和巧克力工厂国语迅雷下载_查理的巧克力工厂迅雷下载

    1、迅雷直接下载地址《查理和巧克力工厂》ftp: download3 *** net movie chaliheqia

  • 神州数码部分股东合计完成减持38.32万股

    神州数码(000034 SZ)公告,公司股东辛昕、叶海强、李岩、韩智敏、吕敬

  • 环球观天下!【阳光评论】情牵山海共发展,续写合作新篇章

    中国网6月16日,由中央网信办网络社会工作局、中国国家铁路集团有限公

  • 旅游
    • 天天即时看!6月16日基金净值:前海开源工业革命4.0混合最新净值2.219,涨4.67%

    • 2023粤港澳车展:坦克两款新能源SUV亮相 500 Hi4-T月底上市

    • “美国长期制裁对古巴经济民生造成严重伤害”(深度观察) 环球快播报

    • 网贷债务逾期被起诉怎么办?网贷为啥只催收不起诉