使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

大语言模型(LLM)已经让我们意识到了通用人工智能的威力,但是在经历过最初的那一拨狂热之后,人们更多的还是在思考如何把私有知识库与这些模型结合,以便实现更加强大的能力。针对这个领域,短短几个月内,就有很多不同的实现方式,其基本思路是对私有知识库进行向量化,通过全新的索引和搜索来先做第一轮的处理,最后将这个搜索结果作为上下文传递给LLM进行进一步的处理。毫无疑问,这个领域会有广阔的前景。.

我会分几篇文章来展开这种类型的解决方案。今天第一篇介绍如何用Azure Semantic search来对私有知识库进行索引和搜索。

第一步:创建Azure Cogitive Search 资源。请注意,如果需要使用语义查询,你需要选择S或以上级别的服务。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

第二步,启用语义查询支持。如果是开发测试阶段,选择Free足矣。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

第三步,准备企业知识库。Cognitive Search其实支持很多数据源,例如如下这些类型。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

为了简单起见,我这里演示如何用Azure Blob Storage来实现。

第四步,创建Blob存储并上传你的资料。我下面是把一批跟M365网络规划和优化有关的网页下载下来,然后上传。关于如何批量下载网页内容,我这里用Github Copilot写好了一个python脚本,如果需要,请私信留言 网页下载代码,别担心,我不会守在电脑旁边等你来问的,你会收到自动回复的。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

第五步,建立索引。你可以直接在storage account中开始创建索引,这个确实很方便了。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

输入名称和你的容器名称。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

按照步骤完成,并且等待索引完成(一般都很快)。

第六步,进行搜索测试。请进入Search explorer.

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

选择对应的索引,然后输入你的查询。请注意,这里的查询可以完全是自然语言的。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

不要激动,这还只是基本的查询,我们接下来要领略一下语义搜索的威力了。

第七步,使用语义搜索(Semantic Search)

你可以在搜索时启用语义搜索,但需要先创建一个配置文件。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

它的返回结果是略有不同的,理解更加精准,另外有一个rerankerScore来表示信心。

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

当然,除了在界面上测试之外,你也可以直接通过 url来调用,前提是你有合法的密钥哦。

https://chenxizhang-azure-search.search.windows.net/indexes/network-docs-index/docs?api-version=2021-04-30-Preview&search=our%20users%20report%20the%20network%20is%20slow%2C%20How%20can%20I%20do&queryLanguage=en-US&queryType=semantic&captions=extractive&answers=extractive%7Ccount-3&semanticConfiguration=semantic%20search

敬请关注下一篇,如何在自定义应用中结合Semantic search和GPT实现私有知识库的利用。