searchGPT开发者教程:从零开始构建LLM驱动的智能搜索引擎
【免费下载链接】searchGPTGrounded search engine (i.e. with source reference) based on LLM / ChatGPT / OpenAI API. It supports web search, file content search etc.项目地址: https://gitcode.com/gh_mirrors/se/searchGPT
searchGPT是一款基于LLM/ChatGPT/OpenAI API的智能搜索引擎,它支持网络搜索、文件内容搜索等功能,并能提供带有来源参考的可靠回答。本教程将带你从零开始搭建这个强大的工具,无需深厚的AI背景,只需跟随简单步骤即可快速上手。
🚀 准备工作:环境与依赖
在开始之前,请确保你的开发环境满足以下要求:
- Python 3.10.8(推荐使用虚拟环境)
- 必要的依赖库(通过requirements.txt安装)
首先克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/se/searchGPT cd searchGPT安装依赖:
pip install -r requirements.txt核心依赖包括:
- OpenAI API客户端(openai==0.27.0)
- Web框架(Flask==2.2.3)
- 语义搜索工具(scikit-learn==1.2.1)
- 文档提取库(python-docx==0.8.11, python-pptx==0.6.21)
🔧 核心配置:config.yaml详解
项目的核心配置文件位于src/config/config.yaml,你需要根据需求修改以下关键参数:
基础设置
general: language: en-US # 支持多语言,如zh-CN、ja-JP等 source_service: is_use_source: true # 启用来源引用(核心功能) is_enable_bing_search: true # 启用必应搜索LLM服务配置
llm_service: provider: openai # 支持openai/goose_ai openai_api: api_key: "your_api_key_here" # 填入OpenAI API密钥 model: gpt-3.5-turbo # 默认模型,也可使用gpt-4 max_tokens: 300 # 回答长度限制缓存设置
cache: is_enable: web: true # 启用网页缓存提升性能 path: .cache # 缓存文件存储路径🏗️ 架构解析:searchGPT工作原理
searchGPT的后端架构采用模块化设计,主要包含五大核心服务:
图:searchGPT系统架构流程图,展示了从用户查询到生成回答的完整流程
1. 来源服务(SourceService)
处理各种数据源:
- 网络搜索(BingSearch)
- 文件提取(PPT/DOC/PDF Extractor)
- 代码位置:src/SourceService.py
2. 语义搜索服务(SemanticSearchService)
实现智能内容匹配:
- PyTerrier-TF:传统搜索算法
- FAISS:向量搜索引擎
- 代码位置:src/SemanticSearchService.py
3. LLM服务(LLMService)
处理自然语言生成:
- OpenAI API集成
- Prompt工程优化
- 代码位置:src/LLMService.py
4. 前端服务(FrontendService)
提供用户交互界面:
- Flask Web应用
- Gradio界面支持
- 代码位置:src/FrontendService.py
5. 文本提取服务(TextExtract)
处理不同格式文档:
- HTML提取:src/text_extract/html/
- 文档提取:src/text_extract/doc/
🖥️ 快速启动:两种运行方式
1. Flask Web应用
python src/flask_app.py访问 http://localhost:5000 即可看到Web界面:
图:searchGPT的Web用户界面,展示了搜索查询和带来源的回答结果
2. Gradio界面
python src/gradio_app.py适合快速演示和测试,自动生成交互式界面。
💡 关键功能实现:核心代码片段
语义搜索实现
# 简化版语义搜索代码 from sentence_transformers import SentenceTransformer import faiss model = SentenceTransformer('all-MiniLM-L6-v2') index = faiss.IndexFlatL2(384) # 匹配模型维度 # 添加文档向量 documents = ["文档1内容", "文档2内容"] embeddings = model.encode(documents) index.add(embeddings) # 查询相似文档 query = "你的查询" query_embedding = model.encode([query]) D, I = index.search(query_embedding, k=3) # 返回Top3结果LLM回答生成
# 简化版LLM调用代码 import openai def generate_answer(prompt, sources): messages = [ {"role": "system", "content": "你是一个基于来源回答问题的AI助手"}, {"role": "user", "content": f"根据以下来源回答问题:{sources}\n问题:{prompt}"} ] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages, max_tokens=300 ) return response.choices[0].message.content📊 可解释性设计:来源追踪与可信度
searchGPT的核心优势之一是提供可解释的回答,每个结论都附有来源引用:
图:searchGPT的可解释性功能展示,点击可展开查看详细来源依据
实现这一功能的关键代码位于src/FootnoteService.py,通过以下方式实现:
- 为每个信息片段添加来源标记
- 支持点击展开查看完整来源
- 实现引用内容的精准定位
🛠️ 扩展与定制:打造个性化搜索引擎
添加新的数据源
- 创建新的提取器类(继承src/text_extract/doc/abc_doc_extract.py)
- 在SourceService中注册新提取器
- 更新配置文件启用新数据源
更换LLM模型
修改src/config/config.yaml中的llm_service部分:
llm_service: provider: openai openai_api: model: gpt-4 # 切换到GPT-4模型📝 总结与下一步
通过本教程,你已经了解了如何搭建和配置searchGPT搜索引擎。这个强大的工具结合了传统搜索与LLM技术,能够提供准确且可验证的回答。
下一步建议:
- 探索playground/目录下的示例代码
- 尝试集成自定义数据源
- 优化prompt工程提升回答质量
- 参与项目贡献,提交PR到官方仓库
现在,你已经具备了构建自己的LLM驱动搜索引擎的基础知识,开始你的AI搜索之旅吧!
【免费下载链接】searchGPTGrounded search engine (i.e. with source reference) based on LLM / ChatGPT / OpenAI API. It supports web search, file content search etc.项目地址: https://gitcode.com/gh_mirrors/se/searchGPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考