Skip to content

Latest commit

 

History

History
162 lines (122 loc) · 7.25 KB

README_zh.md

File metadata and controls

162 lines (122 loc) · 7.25 KB

🇨🇳中文 | 🌐English


SmartSearch: Build your own conversational search engine with LLMs

HF Models Contributions welcome License Apache 2.0 python_version GitHub issues Wechat Group

Features

  • 内置支持开源LLM,可用本地模型搭建API
  • 支持OpenAI LLM API,可用gpt-4
  • 内置支持bing/google/DDGS搜索引擎
  • 可定制的美观UI界面
  • 可分享,缓存搜索结果
  • 支持问题追问,连续问答
  • 支持query分析,基于上下文重写query,精准搜索

安装依赖

pip install -r requirements.txt

运行

1. 构建前端web

两种方法构建前端:

  1. 下载打包好的前端ui,https://github.com/shibing624/SmartSearch/releases/download/0.1.0/ui.zip 解压到项目根目录直接使用。
  2. 自己使用npm构建前端(需要nodejs 18以上版本)
cd web && npm install && npm run build

输出:项目根目录产出ui文件夹,包含前端静态文件。

2. 基于Lepton API运行服务

Note

我们推荐使用内置llm和kv函数。 运行以下命令以自动设置它们。

lep login
python search.py

好了,现在你的搜索应用正在运行:http://0.0.0.0:8081

  • 提供在线colab运行服务demo:demo.ipynb,其对应的colab:Open In Colab

使用搜索引擎API

你可以使用Bing或者Google Search的API运行服务。

使用Bing搜索的API

要使用Bing Web Search API,请访问此链接获取您的Bing订阅密钥。

export BING_SEARCH_V7_SUBSCRIPTION_KEY=YOUR_BING_SUBSCRIPTION_KEY
BACKEND=BING python search.py

使用Google搜索的API

你有三种方法使用Google Search API:

  1. 选择使用来自SearchApi的SearchApi Google Search API
  2. 选择使用Serper的 Serper Google Search API
  3. 选择由Google提供的Programmable Search Engine

对于使用SearchApi的Google搜索:

export SEARCHAPI_API_KEY=YOUR_SEARCHAPI_API_KEY
BACKEND=SEARCHAPI python search.py

对于使用Serper的Google搜索:

export SERPER_SEARCH_API_KEY=YOUR_SERPER_API_KEY
BACKEND=SERPER python search.py

对于使用Programmable Search Engine的Google搜索:

export GOOGLE_SEARCH_API_KEY=YOUR_GOOGLE_SEARCH_API_KEY
export GOOGLE_SEARCH_CX=YOUR_GOOGLE_SEARCH_ENGINE_ID
BACKEND=GOOGLE python search.py

使用OpenAI LLM

如果你追求更好LLM生成效果,你可以使用OpenAI的LLM模型gpt-4

export SERPER_SEARCH_API_KEY=YOUR_SERPER_API_KEY
export OPENAI_API_KEY=YOUR_OPENAI_API_KEY
export OPENAI_BASE_URL=https://xxx/v1
BACKEND=SERPER LLM_TYPE=OPENAI LLM_MODEL=gpt-4 python search.py

配置

以下是部署配置,见search.py

  • resource_shape:大多数重型工作将由LLM服务器和搜索引擎API完成,因此您可以选择一个小资源形状。cpu.small通常就足够好。

然后,设置以下环境变量。

  • BACKEND:要使用的搜索后端。如果你不用bing或google,只需使用LEPTON尝试演示。否则,请设置为 BING, GOOGLE, SERPER, SEARCHAPI,并搭配填写相应的API_KEY,或者使用开源搜索引擎DDGS
  • LLM_TYPE:要使用的LLM类型。如果您正在使用Lepton,请将其设置为lepton。否则,将其设置为openai
  • LLM_MODEL: 运行的LLM模型。我们建议使用mixtral-8x7b, 但如果你想尝试其他模型, 你可以尝试在LeptonAI上托管的那些, 比如说, llama2-70b, llama2-13b, llama2-7b. 注意小模型可能效果不佳
  • KV_NAME: 存储搜索结果所用到的Lepton KV. 可以使用默认值smart-search
  • RELATED_QUESTIONS: 是否生成相关问题. 如果设定为'true', 搜索引擎会为你生成相关问题. 否则就不会
  • REWRITE_QUESTION:是否重写问题。如果您将此设置为true,LLM将重写问题并将其发送到搜索引擎。否则,它不会
  • GOOGLE_SEARCH_CX: 如果正在使用谷歌官方API,请指定搜索cx。否则请留空
  • LEPTON_ENABLE_AUTH_BY_COOKIE: 允许Web UI访问部署。将其设为'true'
  • OPENAI_BASE_URL: 如果您正在使用OpenAI,可以指定基础url。通常为https://api.openai.com/v1
  • ENABLE_HISTORY:是否启用历史记录。如果您将此设置为true,LLM将存储搜索历史记录。否则,它不会

此外,您还可以设置以下KEY:

  • LEPTON_WORKSPACE_TOKEN: 这是调用Lepton的LLM和KV apis所必需的。你可以在Settings找到你的workspace token
  • BING_SEARCH_V7_SUBSCRIPTION_KEY: 如果正在使用Bing, 需要指定订阅密钥. 否则不需要
  • GOOGLE_SEARCH_API_KEY: 如果正在使用Google, 需要指定搜索api密钥. 注意也应该在环境中指定cx. 如果没有使用Google,则不需要
  • SEARCHAPI_API_KEY: 如果正在使用SearchApi,一个第三方谷歌搜索API,需要指定api密钥
  • OPENAI_API_KEY: 如果正在使用OpenAI, 需要指定api密钥

Todo

  • 支持多轮检索,主要是页面显示多轮检索结果
  • 支持第三方LLM的API,如qwen、baichuan等
  • 小程序端支持,目前只支持web端
  • 使用Agent判定是否需要改写query,以及主动反问用户补充问题,提升搜索准确率

Contact

  • Issue(建议):GitHub issues
  • 邮件我:xuming: xuming624@qq.com
  • 微信我:加我微信号:xuming624, 备注:姓名-公司-NLP 进NLP交流群。

License

授权协议为 The Apache License 2.0,可免费用做商业用途。请在产品说明中附加SmartSearch的链接和授权协议。

Contribute

项目代码还很粗糙,如果大家对代码有所改进,欢迎提交回本项目。

Reference