我需要智能搜索——于是我调用了人工智能应用程序接口(无需训练模型)

发布日期:2026-06-05 10:01:58   浏览量 :1
发布日期:2026-06-05 10:01:58  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

几个月前,我正在为一个内部工具构建文档网站。用户不断要求提供一种“能理解意图”的搜索功能——你知道的,就像输入“如何重置密码?”就能得到正确的帮助文章,即使文章标题中并不包含“重置”这个词。

我想:现在是2024年,每个人都在做人工智能。这能有多难呢?

事实证明,这是我说过最后悔的话。

问题所在

我从一个简单的关键词搜索开始。使用了弹性搜索(ElasticSearch)、模糊匹配等各种技术。对于精确术语,它运行得尚可,但在处理复述表达时却失败了。有人会问“我无法登录”,而搜索却返回空结果,因为文章中写的是“认证失败”。

我尝试添加同义词——繁琐且无穷无尽。我尝试使用一个小型自然语言处理库(spaCy)进行实体提取,但这使我的打包体积增加了200兆字节,而且仍然无法理解命名实体之外的意图。

我需要一种能够将自然语言查询映射到正确内容的方法,而无需训练自己的模型或花费数周时间进行调优。

我尝试过但无效的方法

1. 正则表达式 + 同义词词典

我编写了一个庞大的短语到文章标识符的映射表。每当有人使用新的变体表达时,它就会失效。维护起来简直是噩梦。

2. 使用 spaCy 进行本地自然语言处理

import spacy
nlp = spacy.load("en_core_web_lg")

def extract_intent(text):
    doc = nlp(text)
    # ... 猜测意图的复杂逻辑

这在演示中运行良好,但对于实时搜索来说太慢了,并且需要专用服务器。此外,在我们的领域数据上对其进行训练超出了项目范围。

3. 构建简单的嵌入搜索

我尝试使用句子转换器(sentence-transformers)在本地生成嵌入向量,然后计算余弦相似度。这很有前景,但需要不错的图形处理器才能保证合理的延迟。对于一个小型文档网站来说,这仍然有些大材小用。

最终奏效的方法:轻量级的人工智能应用程序接口调用

我意识到我不需要托管模型。我只需要一个快速的应用程序接口,能够接收问题并返回结构化的答案。许多提供商都提供确切的服务——只需通过超文本传输协议发送一个简单的帖子请求,包含提示词和一些上下文信息。

以下是对我有效的方法:

  1. 准备你的内容 —— 将文档分割成带有元数据的小块(例如段落)。
  2. 在后端创建搜索端点,接收用户查询和可选的上下文。
  3. 调用人工智能应用程序接口,使用提示词要求查找最相关的片段。
  4. 返回结果

关键见解:你不需要微调任何东西。精心设计的提示词加上一小组相关文档,足以满足大多数内部工具的需求。

代码示例

我是用节点.js(Express)构建这个功能的。以下是简化版本:

// server.js
import express from 'express

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 订阅 数据