paint-brush
采用 GPT-3 提高工作效率手机搜索搞定方案范文 过@weblabtechnology
962 讀數
962 讀數

利用 GPT-3 改进搜索解决方案

根据 WebLab Technology12m2023/04/13
Read on Terminal Reader

太長; 讀書

在大多数情况下,公司通过简单地直接查询 OLTP 数据库来保持非常基本的搜索级别。 Apache Lucene、Apache Solr、Elasticsearch、Sphinx、MeiliSearch、Typesense 等在处理复杂查询和使用过滤器方面往往相对更快、更好。
featured image - 利用 GPT-3 改进搜索解决方案
WebLab Technology HackerNoon profile picture
0-item


当今很多家庭运用子程序代码常常涉及手机搜索引擎解决处理实施方案,运用户能够按需高速造访当前文章。太难预想任意别的常见功用是可以很好地手机搜索此新信息,然后使手机搜索引擎拥有常见数运用子程序代码中的常见常见功用。

定制的搜索解决方案选项

同一,纵使网上查询和查找的所需十分都,区别的应用领域流程也会用到截然区别的手段。


在大多数情况下,公司通过简单地直接查询 OLTP 数据库来保持非常基本的搜索级别。请求可能如下所示: SELECT id, title FROM, entities WHERE, description LIKE '%bow%


而是,更常考的是,同旁内角以繁复的、联级的表衔接设计提出,这样的设计其特性不好看书、变慢且原创。同旁内角不可领悟上上下下文,必须要 对其进行很多订制,但会不好规范施实。


其实是可以能够 物理视图、查詢清理缓存和许多高技术来拉长查詢继续执行时刻,但上升的更复杂度会产生常见更新系统和共同的搜所结论内具备很大大的迟滞。



原状的研究背景orcale库的百度网络搜索应对计划方案范文的更更好方式计划方案范文或者带来开源系统百度网络搜引索擎,举例说明 Apache Lucene、Apache Solr、Elasticsearch、Sphinx、MeiliSearch、Typesense 等。


这些在处理复杂查询和使用过滤器方面往往相对更快并且更好。但是一旦将这些搜索引擎与谷歌搜索或 DuckDuckGo 等同类搜索引擎进行比较,就会发现开源解决方案无法构建适当的搜索上下文和查询模式——如果用户提供模糊的搜索请求,它们将无法理解查询。

从查询中提取含义


能够想象得出看看,您首要不一定要那些含有口味的黄白色柑桔类的瓜果蔬菜的姓名!但有您想在该运用系统程序中归类关以怎么栽种这类神秘之感的瓜果蔬菜的短文。你怎么完成归类?


您的话题应该是“如何才能在车间内种值黄酸柑橘味”。以上所述其余开放源码手机搜检索擎都应该没办法回此了解的各种相关后果,但是参数库的确是富含关于 种值“柚子”的篇文章。


这是因为从查询中提取意义是一项自然语言任务,没有 AI 组件就不太可能解决。 GPT-3擅长这项任务。


OpenAI 提供基于 GPT-3,将自然语言文本转换为浮点数向量。嵌入本质上是一个低维空间,高维向量可以转换到其中。在这种情况下,高维向量是文本,低维向量是固定大小的输出向量。向量之间的距离表示它们相关的强度。距离越小,相关性越高。通过将文本重新定义为基于矢量的形式,该任务被简化为经典的 ML 搜索问题。


选择合适的型号

选择模型


word表格文本格式到失量素材体现的转化成可以在独立后台突发的,而搜素查证的失量素材化应当在进行时突发的。 OpenAI 给予了几块 GPT-3 3d模型品类:


 text-search-ada-doc-001: 1024 text-search-babbage-doc-001: 2048 text-search-curie-doc-001: 4096 text-search-davinci-doc-001: 12288


更高一些一些的向量层级会致使更加多的嵌到短信,如此也会致使更高一些一些的费用和很慢的查找。


文档通常很长,查询通常很短且不完整。因此,考虑到内容的密度和大小,任何文档的矢量化都与任何查询的矢量化有很大不同。 OpenAI 知道这一点,因此他们提供了两个配对模型, -doc-query

 text-search-ada-query-001: 1024 text-search-babbage-query-001: 2048 text-search-curie-queryc-001: 4096 text-search-davinci-query-001: 12288


重要的是要注意查询和文档必须都使用相同的模型系列并且具有相同的输出向量长度。

示例数据集

通过示例可能最容易观察和理解此搜索解决方案的强大功能。对于这个例子,让我们借鉴其中包含来自 TMDb 的大约 5,000 部电影的元数据。我们将构建一个仅依赖电影文档而非评论的搜索解决方案。


数据集包含大量列,但我们的矢量化过程将仅围绕标题和概述列构建。

嵌入图图像


记录示例:

 Title: Harry Potter and the Half-Blood Prince Overview: As Harry begins his sixth year at Hogwarts, he discovers an old book marked as 'Property of the Half-Blood Prince', and begins to learn more about Lord Voldemort's dark past.


我会们将数剧集遍历到需要准备好目录的文本文档中:


 datafile_path = "./tmdb_5000_movies.csv" df = pd.read_csv(datafile_path) def combined_info(row): columns = ['title', 'overview'] columns_to_join = [f"{column.capitalize()}: {row[column]}" for column in columns] return '\n'.join(columns_to_join) df['combined_info'] = df.apply(lambda row: combined_info(row), axis=1)


置入期间很简洁:
 def get_embedding(text, model="text-search-babbage-doc-001"): text = text.replace("\n", " ") return openai.Embedding.create(input = [text], model=model)['data'][0]['embedding'] get_embedding(df['combined_info'][0])


此代码块输出一个列表,其大小等于模型正在运行的参数,在text-search-babbage-doc-001情况下为 2048。

类试的镶入期间要广泛应用于公司打算搜到的所以word文件:


 df['combined_info_search'] = df['combined_info'].apply(lambda x: get_embedding(x, model='text-search-babbage-doc-001')) df.to_csv('./tmdb_5000_movies_search.csv', index=False)


combined_info_search将保存 combined_text 的矢量表示。

还,这令大吃一惊的是,以经是如此了!另外,我筹备 执行工作举例搜到快速查询:


 from openai.embeddings_utils import get_embedding, cosine_similarity def search_movies(df, query, n=3, pprint=True): embedding = get_embedding( query, engine="text-search-babbage-query-001" ) df["similarities"] = df.combined_info_search.apply(lambda x: cosine_similarity(x, embedding)) res = ( df.sort_values("similarities", ascending=False) .head(n) .combined_info ) if pprint: for r in res: print(r[:200]) print() return res res = search_movies(df, "movie about the wizardry school", n=3)

这些是我们得到的结果:

 Title: Harry Potter and the Philosopher's StoneOverview: Harry Potter has lived under the stairs at his aunt and uncle's house his whole life. But on his 11th birthday, he learns he's a powerful wizard — with a place waiting for him at the Hogwarts School of Witchcraft and Wizardry. As he learns to harness his newfound powers with the help of the school's kindly headmaster, Harry uncovers the truth about his parents' deaths — and about the villain who's to blame. Title: Harry Potter and the Goblet of FireOverview: Harry starts his fourth year at Hogwarts, competes in the treacherous Triwizard Tournament and faces the evil Lord Voldemort. Ron and Hermione help Harry manage the pressure — but Voldemort lurks, awaiting his chance to destroy Harry and all that he stands for. Title: Harry Potter and the Prisoner of AzkabanOverview: Harry, Ron and Hermione return to Hogwarts for another magic-filled year. Harry comes face to face with danger yet again, this time in the form of an escaped convict, Sirius Black — and turns to sympathetic Professor Lupin for help.


“ ”的详述含有词“wizardry”和“school”,但是在快速搜索模拟输出里排在第一次位。第五个效果不想含有“大学”此词,但仍留下亲近“巫术师”、“双五争霸”的词。3.个效果只含有“巫术”的同义词——魔发。


而且,此资料比对库还是有很多某个国外电视电影以学校里或巫术师(或这两种)为优点,但综上所述是仅有的退回立刻们的国外电视电影。这清地说明了搜索引擎处理好计划书合理如果是谅解了企业咨询的下文。


咱们食用了只能有 2048 个技术指标的 Babbage 模特。 Davinci 有六倍多 (12,288) 个技术指标,之所以在高强度非常复杂的搜索部分会表达得更高。


搜索网页化解设计方案但是将时未出现与些搜索有并于的传输。列如,搜索“并于中小学女巫的片”形成:


 Title: Harry Potter and the Philosopher's StoneOverview: Harry Potter has lived under the stairs at his aunt and uncle's house his whole life. But on his 11th birthday, he learns he's a powerful wizard — with a place waiting for him at the Hogwarts School of Witchcraft and Wizardry. As he learns to harness his newfound powers with the help of the school's kindly headmaster, Harry uncovers the truth about his parents' deaths — and about the villain who's to blame. Title: Dumb and Dumberer: When Harry Met LloydOverview: This wacky prequel to the 1994 blockbuster goes back to the lame-brained Harry and Lloyd's days as classmates at a Rhode Island high school, where the unprincipled principal puts the pair in remedial courses as part of a scheme to fleece the school. Title: Harry Potter and the Prisoner of AzkabanOverview: Harry, Ron and Hermione return to Hogwarts for another magic-filled year. Harry comes face to face with danger yet again, this time in the form of an escaped convict, Sirius Black — and turns to sympathetic Professor Lupin for help.


您可能想知道“阿呆与笨蛋:当哈利遇见劳埃德”在这里做什么?值得庆幸的是,这个问题没有在参数更多的参数上重现。

计算查询和文档之间的距离

搜寻输入应富含按对应性降序顺序排列的文本word表格。然而,当我们的可能指导现如今查找与4个文本word表格相互之间的长距离。间距越小,输入的对应性就越高。再,在名词解释的最好位置在此之后,当我们的可能中止确定剩下文本word表格的对应性。


相关输出的图像


在上述示例中,我们使用了由于向量空间的高维性,计算距离。使用 babbage 模型,我们有 2048 个参数。


距离计算算法倾向于用单个数字表示查询和文档之间的这种相似性(差异)。然而,我们不能依赖因为——距离太相似了。这是因为欧几里得距离在大约七个维度之外变得非常不切实际——在这一点上,距离落入相同的桶并且变得几乎相同。


假若不乐意,您可能在前方看看绘制的储存方式库: 或,您可能在Google Colab 中采用它。

时间复杂度

你们食用蛮力策略对文件来重新排列。让你们确定好: ● n:魔鬼训练数值低效的点数● d:数据统计角度


蛮力解决方案的搜索时间复杂度为O(n * d * n * log(n)) 。参数d取决于模型(在 Babbage 的情况下,它等于 2048),而由于排序步骤,我们有O(nlog(n))块。


在一个时段.小编提醒当我们本人,更小的绘图快一点、更优惠是比较严重要的。举列,在百度搜索案例库是类似的度算起步中,Ada 绘图快了两倍,而 Davinci 绘图慢了六倍。


在我的 M1 Pro 上,查询系统和 2048 个因素的 4803 个表格之中的余弦同类度换算的方法消耗 了 1260 毫秒。在到现阶段的保证 中,换算的方法的需求的日期将跟随着表格统计数线性网络增加。互相,该的方法不支持换算的方法并行执行化。

蛮力解决方案的替代方案

在搜索解决方案中,查询应该尽快完成。而这个代价通常是在训练和预缓存时间方面付出的。我们可以使用像 kd 树、r 树或 ball 树这样的数据结构。考虑来自的文章 关于这些方法的计算复杂度分析:它们都导致计算复杂度接近O(k * log(n)) ,其中k是我们希望在单个批次中返回的元素数。


Kd 树、ball 树和 r 树组成部分了适用存放和有效率搜素 N 维空间区域中的点的数据文件型式,列举自己的寓意向量。


Kd 和球树是根据树的数据显示型式,它利用优化的二进制磁盘分区工作方案将环境空间区划为部位,树中的每项结点代表英文同一个子部位。 Kd 树在检索目标范围图内的点或寻找给指定的比较近房东时独特有用。


相仿地,r 树也适用在 N 维环境服务器中文件存储点,可,两者在相关位置内搜索网页点或快速查询给指定地点固定空距内的那些点追诉时效率会高。核心的是,r-trees 实用与 kd 树和 ball 树不同的的设计布局计划书;顾客将环境服务器分为为“梯形”而不会二进制设计布局。


树的改变不会在下面研讨区间之外,与众各种不同的改变将形成与众各种不同的查找模拟输出。

查询时间

量,某个网络搜索改善方案怎么写最确实不错的问题你不是我们都一定要启用异常 OpenAI API 来收录查找置于向量。究竟我们都的图像匹配可能多快地看到在最近这一段时间的楼下住户,都想要一名方式无复流过程。


 Text-search-babbage-query-001 Number of dimensions: 2048 Number of queries: 100 Average duration: 225ms Median duration: 207ms Max duration: 1301ms Min duration: 176ms


 Text-search-ada-query-002 Number of dimensions: 1536 Number of queries: 100 Average duration: 264ms Median duration: 250ms Max duration: 859ms Min duration: 215ms


 Text-search-davinci-query-001 Number of dimensions: 12288 Number of queries: 100 Average duration: 379ms Median duration: 364ms Max duration: 1161ms Min duration: 271ms


比如各位以中四位数有所作为能参考点,各位能发现 ada-002 慢了 +28%,而 davinci-001 慢了 +76%。

GPT-3 搜索嵌入的局限性

参考,我们可以得出结论,GPT-3 没有提供出色的性能或输出质量,并且需要依赖相当慢的外部 API。 GPT-3 能够支持最多 4096 个令牌(大约 3072 个单词)的输入,但是,没有通过 API 提供的截断服务,并且尝试对超过 4096 个令牌的文本进行编码将导致错误。因此,用户(您)有责任确定实际可以编码的文本量。


除此之外,OpenAI 的培顺人工成本相对比较较高。

培训费用图片

或者,您可以考虑尝试或者 .

Elasticsearch 中的近似最近邻搜索

Elasticsearch 8.0 适用极有效率的相近度高最进邻寻找 (ANN),常用于比不管什么线性网络 KNN 变快地克服人们的话题数量级。 Elasticsearch 8.0 凭借又称分出层次导航系统小全世界图 (HNSW) 的 ANN 法求,不同相近性将向量聚集成图。在蕴含 1000 万个置入向量的统计资料集进取行测试英文,人们在一种精益求精于确定的机械上在利用 ANN 实行了每秒 200 次检查的之高特性,而在利用 KNN 每秒仅做好 2 次检查。三者均由 Elasticsearch 可以提供。


根据 ElasticSearch 的,这个性能的成本是召回的5%。这意味着大约十分之一的最接近的向量并不是真正相关的。我们应用了一种混合方法来改进这个结果:请求 k+l 而不是 k 并应用过滤来删除异常值。可悲的是,没有分页功能。因此,这种方法仅适用于某些用例。


之后一切正如您想要看的那么样,GPT-3 置于并并非是来处理随便和那些浏览疑问的美好来处理实施方案格式,可能它的数据库指数有难度性、投入以其浏览实际操作(和是相似值)的高折算有难度性。虽然太过,GPT-3 Embeddings 即使是随便为兼有不过频查到和控制好量数据库指数必须的浏览来处理实施方案格式找到强 基部的人的必备的选择。


此外,还值得补充的是,微软最近 ____ Bing 搜索引擎现在使用 GPT 3.5 的新升级版本,称为“Prometheus”,最初是为搜索开发的。根据公告,新的 Prometheus 语言模型允许 Bing 增加相关性、更准确地注释片段、提供更新鲜的结果、理解地理定位并提高安全性。这可能会为将自回归语言模型用于搜索解决方案开辟新的可能性,我们一定会继续关注这一点。


参考:


也公布的











바카라사이트 바카라사이트 온라인바카라