利用Azure语义搜索与OpenAI,打造认知搜索系统

在当今的数字时代,拥有强大、可扩展且高效的系统不仅仅是一种竞争优势,更是一种竞争优势。这是必要的。无论您是努力优化用户输入处理旨在简化文档搜索,多种服务和平台的结合都是获得无与伦比性能的关键。在本文中,我们将探索一种将 Azure 认知服务的强大功能与 OpenAI 的功能相结合的整体方法。通过深入研究意图识别、文档过滤、特定领域的算法和文本摘要,您将学习创建一个不仅可以理解用户意图而且可以有效处理和呈现信息的系统。

我们将构建这个:

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

image.png

设置环境

在我们深入之前,让我们确保已经安装了必要的软件包并设置了环境变量:

!pip show azure-search-documents%pip install azure-search-documents --pre%pip show azure-search-documents!pip install python-dotenv!pip install openaiimport osimport requestsimport jsonimport openaiopenai.api_key = os.getenv("AZURE_OPENAI_KEY")openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT")openai.api_type = 'azure'openai.api_version = '2023-05-15'# Look in Azure OpenAI Studio > Deploymentsdeployment_name = 'gpt-35-turbo'

在这里,我们使用必要的 API 密钥、端点和类型来设置 OpenAI 环境。

设置 Azure 搜索

要使用Azure语义搜索,我们需要导入必要的模块并设置环境。

import osfrom azure.core.credentials import AzureKeyCredentialfrom azure.search.documents.indexes import SearchIndexClientfrom azure.search.documents import SearchClientfrom azure.search.documents.indexes.models import (    ComplexField,    CorsOptions,    SearchIndex,    ScoringProfile,    SearchFieldDataType,    SimpleField,    SearchableField)

导入模块后,我们现在可以设置 azure 搜索服务端点和 api 密钥:

# 从环境中设置服务端点和 API 密钥service_name = "xxxxx"admin_key ="xxxxx"# 如果您共享密钥 - 请确保您的 index_name 是唯一的!index_name = "hotels-quickstart"# 创建 SDK 客户endpoint = "https://{}.search.windows.net/".format(service_name)admin_client = SearchIndexClient(endpoint=endpoint,                      index_name=index_name,                      credential=AzureKeyCredential(admin_key))search_client = SearchClient(endpoint=endpoint,                      index_name=index_name,                      credential=AzureKeyCredential(admin_key))

(注意:在共享任何代码之前,请务必掩盖或隐藏您的密钥。)

为 Azure 语义搜索准备索引

在将数据添加到 Azure 搜索之前,我们需要定义一个描述数据结构的索引:

# 删除索引(如果存在)try:    result = admin_client.delete_index(index_name)    print ('Index', index_name, 'Deleted')except Exception as ex:    print (ex)

此代码片段确保如果索引已存在,则将其删除。这在重新运行代码或更改索引时很有用。

现在,让我们指定索引的架构:

# 指定索引模式name = index_name fields = [         SimpleField(name= "HotelId" , type=SearchFieldDataType.String, key= True ),         SearchableField(name= "HotelName" , type=SearchFieldDataType.String, sortable= True ),         SearchableField (名称= “描述”,类型=SearchFieldDataType.String,analyzer_name= “en.lucene”),        SearchableField(名称= “Description_fr”,类型=SearchFieldDataType.String,analyzer_name= “fr.lucene”),        SearchableField(名称= “类别”、 type=SearchFieldDataType.String、facetable= True、filterable= True、sortable= True )、        SearchableField(name= "Tags"、collection= True、type=SearchFieldDataType.String、facetable= True、filterable= True )、        SimpleField(name = “ParkingInincluded”,类型=SearchFieldDataType.Boolean,facetable= True,filterable= True,sortable= True),        SimpleField(name= “LastRenovationDate”,type=SearchFieldDataType.DateTime关闭设置,facetable= True,filterable=True、sortable= True )、        SimpleField(name= "Rating"、 type=SearchFieldDataType.Double、facetable= True、filterable= True、sortable= True )、        ComplexField(name= "地址"、 fields=[             SearchableField(name= " StreetAddress"、 type=SearchFieldDataType.String)、            SearchableField(name= "City"、 type=SearchFieldDataType.String、facetable= True、 filterable= True、 sortable= True )、            SearchableField(name= "StateProvince"、 type=SearchFieldDataType.String、facetable= True、filterable= True、sortable= True )、            SearchableField(name= "邮政编码"、 type=SearchFieldDataType.String、facetable= True、filterable= True、sortable= True )、            SearchableField(name = “国家”,类型= SearchFieldDataType.String,facetable = True,filterable = True,sortable = True),        ])    ] cors_options = CorsOptions(allowed_origins = [ “*” ],max_age_in_seconds = 60)Scoring_profiles = [] suggester = [{ 'name' : 'sg' , 'source_fields' : [ '标签' , '地址/城市' , '地址/国家' ]}]

接下来,您必须在 Azure 上创建此索引:

index = SearchIndex(    name=name,    fields=fields,    scoring_profiles=scoring_profiles,    suggesters = suggester,    cors_options=cors_options)try:    result = admin_client.create_index(index)    print ('Index', result.name, 'created')except Exception as ex:    print (ex)

创建索引后,我们需要用文档填充它。需要指出的是,它可以是任何类型的文档!我只是在此处手动添加将保留在 blob 存储中的文档:

文档 = [     {     "@search.action": "上传", "@search.action" : "上传" ,     "HotelId" : "1" ,     "HotelName" : "秘密点汽车旅馆" ,     "Description" : "酒店地理位置优越,位于纽约市中心的城市主要商业干道上。几分钟即可到达时代广场和城市的历史中心,以及使纽约成为美国最具吸引力的城市之一的其他名胜古迹和国际大都市。” ,    “Description_fr”:“L'hôtel est idéalement situé sur la prime artère Commerciale de la ville en plein cœur de New York.A insi que d'autres lieux d'intérêt qui font纽约的城市充满魅力和美国的国际化。” ,     "Category" : "精品店" ,     "Tags" : [ "游泳池" , "空调" , "礼宾服务" ],     "ParkingInincluded" : "false" ,     "LastRenovationDate" : "1970-01-18T00:00:00Z ”,    "Rating" : 3.60 ,     "Address" : {            “StreetAddress”:“677 第五大道”,        “City”:“纽约”,        “StateProvince”:“纽约” ,        “PostalCode”:“10022”,        “Country”:“美国”         }     },    {     “@search. action" : "上传" ,     "HotelId" : "2" ,     "HotelName" : "双圆顶汽车旅馆" ,     "Description" :“该酒店坐落在一座十九世纪的广场上,该广场已按照最高建筑标准进行扩建和翻新,打造出一座现代化、实用的一流酒店,艺术和独特的历史元素与最现代的舒适设施共存。” ,     "Description_fr" : "L'hôtel 位于十九世纪的地方,是一座现代化酒店的高级规范建筑,在艺术和历史独特方面具有一流的功能和一流的设计舒适与现代共存。” ,     "Category" : "精品店" ,     "Tags" : [ "泳池" ,],     "ParkingInincluded" : "false" ,     "LastRenovationDate" : "1979-02-18T00:00:00Z" ,     "Rating" : 3.60 ,     "Address" : {         "StreetAddress" : "140 大学城中心" ,         "City”:“萨拉索塔”,        “StateProvince”:“佛罗里达州”,        “PostalCode”:“34243”,        “Country”:“美国”         }     },    {     "@search.action" : "上传" ,     "HotelId" :"3" ,     "HotelName" : "三重景观酒店" ,     "Description" : "该酒店在 William Dough 的管理下以其卓越的美食脱颖而出,他为酒店的所有餐厅服务提供建议并监督。" ,     "Description_fr" : "L'hôtel 位于十九世纪的地方,是一座现代化酒店的高级规范建筑,在艺术和历史独特方面具有一流的功能和一流的设计舒适与现代共存。” ,     "Category" : "度假村中心" ,    "Tags" : [ "酒吧" , "欧陆式早餐" ],     "ParkingInincluded" : "true" ,     "LastRenovationDate" : "2015-09-20T00:00:00Z" ,     "Rating" : 4.80 ,     "Address" : {         "StreetAddress" : “3393 Peachtree Rd”、        “City”:“亚特兰大”、        “StateProvince”:“GA”、        “PostalCode”:“30326”、        “Country”:“美国”         }     }]

现在将这些文档推送到语义搜索索引。

try:    result = search_client.upload_documents(documents=documents)    print("Upload of new document succeeded: {}".format(result[0].succeeded))except Exception as ex:    print (ex.message)

与 OpenAI 集成

让我们建立与 OpenAI 的连接:

question="What is the address of ChatGpt Hotel?"

然后,添加 Azure OpenAI 连接:

纳米搜索 纳米搜索

纳米搜索:360推出的新一代AI搜索引擎

纳米搜索 30 查看详情 纳米搜索

###import osimport requestsimport jsonimport openaios.environ["AZURE_OPENAI_KEY"] = "xxxx"os.environ["AZURE_OPENAI_ENDPOINT"] = "xxxx"openai.api_key = os.getenv("AZURE_OPENAI_KEY")openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT")openai.api_type = 'azure'openai.api_version = '2023-05-15'# 在 Azure OpenAI Studio > 部署中查找deployment_name = 'gpt-35-turbo'#### 定义一个函数,根据系统消息和消息创建提示def create_prompt(system_message, messages):    prompt = system_message    message_template = "n{}n{}n"    for message in messages:        prompt += message_template.format(message['sender'], message['text'])    prompt += "nassistantn"    return prompt# 定义系统消息system_message_template = "systemn{}n"system_message = system_message_template.format("")print(system_message)

此时,您可以使用语义搜索和 Azure OpenAI。我们来查询语义搜索:

import jsonresults =  search_client.search(search_text=question, include_total_count=True, select='HotelId,HotelName,Tags,Address')=  search_client.search(search_text=question, include_total_count=True, select='HotelId,HotelName,Tags,Address')json_results=""print ('Total Documents Matching Query:', results.get_count())for result in results:    #print("{}: {}: {}".format(result["HotelId"], result["HotelName"], result["Tags"],results["Address"]))    json_results+=str(result)print(json_results)

有了搜索结果,我们现在可以利用 Azure OpenAI 来解释或进一步处理结果。

# 创建消息列表来跟踪对话messages = [{"sender": "user", "text": "Hello, take into account the following information "+json_results},            {"sender": "user", "text": question},            ]response = openai.Completion.create(  engine=deployment_name,  prompt= create_prompt(system_message, messages),  temperature=0.7,  max_tokens=800,  top_p=0.95,  frequency_penalty=0,  presence_penalty=0,    stop=[""])print(response)

此代码向 OpenAI 模型提示搜索结果和我们的原始问题,使其能够根据数据处理并提供有意义的信息。

结论

在本文中,我们了解了如何将 Azure 语义搜索的强大功能与 OpenAI 的功能相结合。通过集成这两个强大的工具,我们可以在我们的应用程序中为用户提供丰富的智能搜索结果。

以上就是利用Azure语义搜索与OpenAI,打造认知搜索系统的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/482350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 12:01:00
下一篇 2025年11月8日 12:02:19

相关推荐

  • AI动画制作工具排行榜 能免费使用的10款AI动画制作工具推荐

    以下是10款免费的AI动画制作工具:1.智影:腾讯推出的在线视频制作平台,提供日漫风格,限时免费。2.Artflow:AI动画创建工具,Story Studio具有视频漫画生成功能,支持12种画面视觉风格。3.Flow Studio:通过文字生成视频片段,支持多种画面风格,新用户有200积分免费生成…

    2025年12月4日 科技
    000
  • 2025年全球AI应用top20最新榜单出炉

    生成式AI与多模态应用的代表包括:1. OpenAI GPT-5通过图灵测试,支持跨模态推理,API调用量达10万亿次/月;2. DeepSeek-R1用户破百万,推理成本低,支持中文理解;3. Google Gemini Ultra与谷歌生态深度整合,市占率40%;4. MidJourney V5…

    2025年12月4日
    000
  • Linux实现自动挂载autofs的方法详解

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 目录 实现自动挂载-autofs autofs工具简单使用 autofs配置详细说明 自动挂载资源有两种格式 优化Linux系统性能 安装Tuned 选择调整配置文件 检查系统推荐的调整配置文件…

    2025年12月4日
    000
  • Pollinations.AI— 开源AI内容生成平台,提供免费文本和图像生成API

    pollinations.ai 是一个开源的ai内容生成平台,提供免费且易于使用的文本和图像生成api。pollinations.ai无需注册或api密钥即可使用,支持多种功能,包括图像生成、文本生成、文生音频、音频转文字及视觉内容解析。pollinations.ai提供丰富的api接口和sdk,方…

    2025年12月4日 科技
    000
  • OpenAI o4-mini— OpenAI推出的小型推理模型

    openai o4-mini 是由openai推出的一款小型推理模型,专为快速且经济高效的推理任务而设计。该模型在数学、编程和视觉任务上表现卓越,在aime 2024和2025基准测试中表现出色,是最佳模型之一。openai o4-mini 支持高容量和高吞吐量的推理任务,适用于快速处理大量问题。它…

    2025年12月4日
    000
  • BlenderMCP— 基于 MCP 集成的 3D 建模工具

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ MCP Market MCP Servers集合平台,帮你找到最好的MCP服务器 67 查看详情 BlenderMCP是什么 blendermcp是一种将blender与claude ai通过模…

    2025年12月4日 科技
    000
  • OpenAI拟30亿美元收购AI编程工具Windsurf

    据知情人士透露,openai正在商谈以约30亿美元的价格收购人工智能辅助编码工具windsurf(原名codeium)。此项交易将成为openai迄今为止最大的一笔收购案,尽管具体细节尚未敲定,谈判仍有可能会改变或终止。 报道指出,Windsurf正在与Kleiner Perkins和General…

    2025年12月4日
    000
  • VSCode怎么出现波浪线_VSCode错误提示和语法检查功能说明教程

    VSCode中的波浪线是语言服务、Linter和编译器协同提供的实时反馈,红色表示错误(如语法错误),黄色表示警告(如未使用变量),绿色或下划线表示建议(如代码优化),通过悬停查看提示、检查配置文件(如tsconfig.json、.eslintrc)、使用“问题”面板(Ctrl+Shift+M)定位…

    2025年12月4日
    100
  • 苹果回应马斯克指控:App Store 公平且无偏见

    感谢网友 風見暉一、对的时间点 提供的线索! 8 月 13 日,苹果公司针对埃隆・马斯克(Elon Musk)此前关于 App Store 在人工智能应用推广中偏袒 OpenAI 的 ChatGPT 的说法作出回应,强调其应用商店平台始终保持中立与公平。 苹果向彭博社记者马克・古尔曼(Mark Gu…

    2025年12月3日
    100
  • 快速生成ai图片的工具排行榜单top10汇总

    以下是快速生成AI图片的工具排行榜单前三名:1. DALL·E 3:由OpenAI开发,支持复杂指令和多轮对话修改,集成于ChatGPT Plus或通过Bing Image Creator免费使用。2. Midjourney:基于Discord,艺术风格多样,生成质量高,需订阅使用。3. Stabl…

    2025年12月3日 科技
    100
  • Agent 要被吃进大模型了

    今天凌晨,奥特曼突然发文宣布推出自家最新的 o 系列模型:满血版 o3 和 o4-mini,同时表示这两款模型都可以自由调用 chatgpt 里的各种工具,包括但不限于图像生成、图像分析、文件解释、网络搜索、python。 总的来说,就是比前一代的性能更强而且价格更低。 ☞☞☞AI 智能聊天, 问答…

    2025年12月3日 科技
    000
  • APP接入AI大模型:实现智能化!

    ai大模型凭借其卓越的理解、生成与推理能力,正在重塑软件应用的形态。将ai大模型能力融入现有或新开发的app中(即app接入ai大模型),已成为开发者增强产品竞争力、为用户打造前所未有的智能体验的关键手段。这不仅是一次技术迭代,更是推动应用向智能化转型的核心战略。 为何APP接入AI大模型已成为不可…

    2025年12月3日
    000
  • AI如何连接数据库执行SQL_利用AI工具连接并运行SQL教程

    AI连接数据库执行SQL是通过自然语言理解将用户需求转化为可执行的SQL语句,实现人机协作的数据查询方式。首先选择支持数据库类型的AI工具,配置安全连接并提供数据库Schema以提升准确性;接着输入自然语言问题,AI生成SQL后需经人工审查优化,再执行获取结果。该技术降低了非技术人员使用数据的门槛,…

    2025年12月3日 数据库
    000
  • 豆包 AI 官网入口 豆包 AI 使用在线入口

    豆包 AI 的官网入口是 https://www.doubao.com/,使用攻略包括:1. 注册与登录:通过官网注册或第三方账号登录;2. 选择使用方式:网页版、PC 客户端、手机 APP、浏览器插件;3. 基础操作:直接对话、上传图片、使用智能体、保存对话;4. 提问技巧:问题具体化、提供背景信…

    2025年12月2日
    100
  • 豆包 AI 网页端入口 豆包 AI 网页端在线网址

    豆包 AI 网页端入口是 https://www.doubao.com/chat/。其特色功能包括:1. 智能问答,提供各领域的准确答案;2. 内容生成与辅助创作,支持写作和图像生成;3. 搜索与浏览辅助,优化搜索结果并提供网页摘要;4. 对话管理与分享,支持对话分组和分享;5. 本地图片编辑,提供…

    2025年12月2日
    000
  • 豆包 AI 手机客户端入口 豆包 AI 客户端在线入口

    安卓用户可通过应用商店下载或官网下载获取豆包AI客户端,iOS用户通过App Store获取。安装后,打开应用并注册登录即可使用。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 入口地址: 1、豆包ai手机客户端入口☜☜☜☜☜点击保存 2、…

    2025年12月2日
    000
  • 首届魔搭开发者大会举办,重磅发布开发者激励计划

    雷峰网讯 6 月 30 日,首届魔搭开发者大会在北京盛大召开。自 2022 年 11 月成立以来,经过两年多的快速发展,社区已聚集超过 500 家贡献机构,托管开源模型数量突破 7 万个,增长达 200 多倍;用户规模从 2023 年 4 月的 100 万迅速扩展至目前的 1600 万,增幅约 16…

    2025年12月2日
    000
  • 怎样用免费工具做年终PPT_免费年终总结PPT的制作方法

    使用AI工具可免费快速制作专业年终总结PPT。首先通过Autoppt输入主题一键生成多套方案;其次利用博思AIPPT或笔灵PPT导入已有文档自动转为幻灯片;再从OfficePlus等网站下载免费模板手动填充内容;最后熟悉VBA者可用ChatGPT生成代码自动化创建8页基础结构,提升效率。 如果您需要…

    2025年12月2日
    000
  • 夸克网盘资源精品合集_夸克网盘入口快速下载链接直达

    夸克网盘资源精品合集_夸克网盘入口快速下载链接直达?这是不少网友都关注的,接下来由PHP小编为大家带来夸克网盘资源精品合集_夸克网盘入口快速下载链接直达,感兴趣的网友一起随小编来瞧瞧吧! 夸克网盘资源精品合集入口 1、夸克网盘资源精品合集可通过其官方应用或网页端直接访问,官方地址为:https://…

    2025年12月2日 软件教程
    000
  • 如何使用 CSS Flexbox 实现图片和文本的响应式布局?

    CSS Flexbox 响应式布局:图片与文本的完美结合 构建自适应网页布局,应对不同屏幕尺寸至关重要。本文将演示如何利用 CSS Flexbox 实现一个常见的布局需求:左侧固定尺寸图片,右侧自适应文本内容。 在宽屏设备上,文本占据剩余空间;而在窄屏设备(例如手机)上,图片则显示在文本上方。 挑战…

    2025年12月2日 web前端
    000

发表回复

登录后才能评论
关注微信