大语言模型(LLM)已经让我们意识到了通用人工智能的威力,但是在经历过最初的那一拨狂热之后,人们更多的还是在思考如何把私有知识库与这些模型结合,以便实现更加强大的能力。针对这个领域,短短几个月内,就有很多不同的实现方式,其基本思路是对私有知识库进行向量化,通过全新的索引和搜索来先做第一轮的处理,最后将这个搜索结果作为上下文传递给LLM进行进一步的处理。毫无疑问,这个领域会有广阔的前景。
我会分几篇文章来展开这种类型的解决方案。今天第一篇介绍如何用Azure Semantic search来对私有知识库进行索引和搜索。
第一步:创建Azure Cogitive Search 资源。请注意,如果需要使用语义查询,你需要选择S或以上级别的服务。
第二步,启用语义查询支持。如果是开发测试阶段,选择Free足矣。
第三步,准备企业知识库。Cognitive Search其实支持很多数据源,例如如下这些类型。
为了简单起见,我这里演示如何用Azure Blob Storage来实现。
第四步,创建Blob存储并上传你的资料。我下面是把一批跟M365网络规划和优化有关的网页下载下来,然后上传。关于如何批量下载网页内容,我这里用Github Copilot写好了一个python脚本,如果需要,请私信留言 网页下载代码,别担心,我不会守在电脑旁边等你来问的,你会收到自动回复的。
第五步,建立索引。你可以直接在storage account中开始创建索引,这个确实很方便了。
输入名称和你的容器名称。
按照步骤完成,并且等待索引完成(一般都很快)。
第六步,进行搜索测试。请进入Search explorer.
选择对应的索引,然后输入你的查询。请注意,这里的查询可以完全是自然语言的。
不要激动,这还只是基本的查询,我们接下来要领略一下语义搜索的威力了。
第七步,使用语义搜索(Semantic Search)。
你可以在搜索时启用语义搜索,但需要先创建一个配置文件。
它的返回结果是略有不同的,理解更加精准,另外有一个rerankerScore来表示信心。
当然,除了在界面上测试之外,你也可以直接通过 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实现私有知识库的利用。