09|语义检索,利用Embedding优化你的搜索功能
该思维导图由 AI 生成,仅供参考
让 AI 生成实验数据
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何利用OpenAI的Embedding和Completion接口来优化搜索功能和商品推荐的冷启动。作者首先指出了传统搜索引擎存在的不足,并介绍了利用OpenAI的Embedding接口将搜索词转换成向量,并通过计算余弦距离实现语义搜索的方法。接着,演示了如何利用生成的商品标题数据进行搜索实验,并展示了搜索结果的有效性。此外,文章还介绍了如何利用Embedding信息进行商品推荐的冷启动,通过计算商品名称的语义相似度来进行推荐。通过实际代码演示,读者可以了解到如何利用AI技术来优化搜索功能和商品推荐,提高搜索结果的质量和效率。文章还介绍了如何利用Faiss这个Python包来加速搜索过程,以及如何利用向量数据库进行快速搜索相似性。最后,作者总结了三个主要教学点,包括如何利用AI生成数据、利用Embedding进行语义搜索优化以及如何通过Faiss等工具快速进行向量检索。整体来说,本文通过实例展示了如何利用OpenAI的接口来生成实验数据,为搜索功能和商品推荐提供帮助,为读者提供了一种新的思路和方法。
《AI 大模型之美》,新⼈⾸单¥68
全部留言(28)
- 最新
- 精选
- 廉烨老师,请问是否有开源的embedding组件,能够达到或接近openai embedding能力的?能够用于中文问答搜索
作者回复: 我们之前用过开源的t5-base,embedding也还不错 你可以选择 flan-t5 系列,或者后面介绍开源平替的 sentence_transformers 只是embedding的话,可以选的还是不少的
2023-04-11归属地:上海10 - 金这门课程主要讲nlp吗?
作者回复: 主要是如何运用现在的AI工具做应用开发。自然语言是其中的一部分,核心也不是自然语言处理知识,而是怎么利用好大语言模型直接开发应用。
2023-04-03归属地:广东5 - eagle过几天openAI的模型版本升级了,这些保存的embedding会失效吗?
作者回复: 类似 text-ada-embedding 之类的小模型不会改变 升级往往是提供一个新模型 特定模型也有带日期的快照版本,选取那些快照版本就好了。
2023-04-05归属地:江苏4 - Jelly当使用Llama Index导入一篇产品介绍的时候,问:本产品的特征是什么,向量匹配不准确。使用XXX的特征就没问题。当导入年报的时候问:2022年营收是多少?向量匹配也不准确,直接问:营收是多少就可以。请问怎么让用户问的问题更智能?
作者回复: 有几种做法 1. 不只是用embedding来做文本召回,llama还提供了更多的数据结构,可以深入看一遍文档,试一下其他的indices 2. 对于文本,通过 self-ask,先让OpenAI生成很多针对内容的问题。然后和问题做匹配。
2023-04-23归属地:广东2 - Yezhiwei请问老师可以把关系型数据库的结构化数据embedding 到向量数据库吗?比如财务报表的数据,然后通过自然语言的方式查询数据,谢谢
作者回复: 可以,但是我会建议反过来操作。把数据库的表信息和需求提供给大语言模型的上下文,然后让大语言模型自动生成查询的SQL,也许效果更好一些。
2023-04-12归属地:北京22 - Joe Blackembedding的实现是否也需要基础模型的知识沉淀呢?比如文字上虽然不相同,但是含义相近的句子生成的向量是相似的,这个是依靠模型之前学习的知识是吗?那这样自然就是越大的模型embedding的效果越好?可以这样理解吗?
作者回复: embedding就是基础模型啊,只是不是拿来生成文本,只是用了最后一层Transformer里的输出向量。 所以的确是越大的模型,embedding按道理应该越好。
2023-05-11归属地:北京1 - 渔樵耕读请问有遇到安装faiss时提示:PackagesNotFoundError的没?改为pip install faiss 报错: ERROR: Could not find a version that satisfies the requirement faiss (from versions: none) ERROR: No matching distribution found for faiss
作者回复: pip install faiss-cpu 或者 pip install faiss-gpu
2023-04-11归属地:北京21 - xbccosine_similarity 也可以传入多个embeddings. scores = cosine_similarity(list[list[float]], list[float]) indices = np.argsort(scores)[::-1]
作者回复: 👍
2023-04-04归属地:海南1 - Oli张帆考虑到我的服务器硬件资源有限(300MB的软限制,500MB的硬限制,现在已经占到了450MB),而且我已经在进行其他任务时使用了很多资源,当我在OpenAI之上构建AI机器人时,我考虑使用这个策略。请老师看看是否能行得通。 每当用户发送请求时,我首先检测他的意图。我可以使用小的embeddings来帮助意图检测。甚至可以有其他方式,如缓存和预先一些意图让用户来点击,来加速意图检测。 在我检测到用户意图后,我可以调用不同的embeddings库。例如,我的客服embeddings库将仅有50个项目,这对于余弦相似性来说非常快速和高效。我还可以将新闻embeddings库限制为最新的100篇文章,以便它可以轻松地通过余弦相似性处理。 尽管这种方法可能不像搜索单个大型嵌入数据库那样准确,但如果我为用户提供足够的指导,您认为它能产生足够好的用户体验吗?例如,在我的界面中,我可以向用户显示他们当前正在讨论“最新的AI发展”或“客户服务”。然后,也可以允许用户快速地改变当前的话题。 请老师看看,这个办法能不能跑通。还没有什么我没有想到的地方?
作者回复: 这个办法当然不是不可以。但是为什么要限制自己用那么小的内存呢?毕竟现在服务器的成本并不高啊。 不用faiss,直接搞个云托管的向量数据库好了?大部分都有免费档位都比你自己的100条资源要多啊?
2023-04-03归属地:北京31 - 黄智荣这个挺有意思的。不过这种性能应该会降低很多,就算有这种通过faiss计算。原来通过倒排索引,用很低的资源就可以实现,用这faiss 数据量一大,估计都要用显卡才可以,量大对显存要求也很高
作者回复: faiss其实还是很快的,百万量级的faiss similarity通过CPU计算也只需要10ms以内
2023-05-07归属地:福建