如何利用 AI 的能力来强化搜索一直是业内的关注方向,开发者们希望借此给用户带来更好的体验。
llm-answer-engine 是一个开源的 AI 增强搜索引擎,它包含构建复杂答案引擎所需的代码和指令。该引擎利用 Groq、Mistral AI 的 Mixtral、Langchain.JS、Brave Search、Serper API 和 OpenAI 的功能,旨在根据用户查询高效地返回源、答案、图像、视频和后续问题。
技术栈分析
该项目采用了现代化的 Web 开发技术栈,确保高性能与可扩展性:
- Next.js:用于构建服务器端渲染(SSR)和静态 Web 应用程序的 React 框架,提供优秀的 SEO 性能和用户体验。
- Tailwind CSS:实用程序优先的 CSS 框架,用于快速构建自定义且响应式的用户界面。
- Vercel AI SDK:用于构建人工智能驱动的流文本和聊天 UI 的库,简化了大模型交互的开发流程。
- Groq & Mixtral:处理和理解用户查询的核心技术,Groq 提供极速推理能力。
- Langchain.JS:专注于文本操作的 JavaScript 库,例如文本分割、嵌入生成及链式调用。
- Brave Search:注重隐私的搜索引擎,用于采购相关内容和图像结果。
- Serper API:用于根据用户的查询获取相关的视频和图像结果。
- OpenAI Embeddings:用于创建文本块的矢量表示,支持语义搜索。
- Cheerio:用于 HTML 解析,允许从网页中提取结构化内容。
- Ollama(可选):用于本地流式推理和嵌入,适合离线或私有化部署场景。
- Upstash Redis 速率限制(可选):用于为应用程序设置速率限制,防止滥用。
架构原理
llm-answer-engine 的核心在于检索增强生成(RAG)技术的实现。其工作流程大致如下:
- 查询理解:接收用户的自然语言查询,通过 LLM 进行意图识别。
- 信息检索:利用 Brave Search 或 Serper API 获取互联网上的相关文档片段。
- 内容提取:使用 Cheerio 解析 HTML,提取关键文本内容。
- 向量化:将提取的文本块通过 OpenAI Embeddings 转换为向量表示。
- 相似度匹配:在向量数据库中进行近似最邻近搜索,找到最相关的上下文。
- 答案生成:将上下文和用户查询组合成 Prompt,发送给 Groq 或 Mixtral 模型生成最终答案。
- 多模态输出:同时检索并展示相关的图片和视频结果。
这种架构确保了回答不仅基于预训练知识,还能结合最新的网络信息,提高了准确性和时效性。
安装与部署
环境准备
在开始之前,请确保您的环境中已安装 Node.js 和 NPM。此外,您需要注册以下服务的 API Key:
- OpenAI
- Groq
- Brave Search
- Serper
密钥获取方式请访问对应官网控制台。
源码安装
# 克隆项目仓库
git clone https://github.com/developersdigest/llm-answer-engine.git
cd llm-answer-engine
# 安装依赖
npm install
配置环境变量
在根目录下新建 .env 文件,填入准备好的 API Key:
OPENAI_API_KEY=your_openai_api_key
GROQ_API_KEY=your_groq_api_key
BRAVE_SEARCH_API_KEY=your_brave_search_api_key
SERPER_API_KEY=your_serper_api_key
注意:请勿将包含真实密钥的文件提交到公共版本控制系统中。
启动服务
npm run dev
访问 http://localhost:3000 即可体验。
配置详解
配置文件位于 app/config.tsx 中。您可以根据实际需求修改以下参数:
const config = {
useOllamaInference: false,
useOllamaEmbeddings: false,
inferenceModel: 'mixtral-8x7b-32768',
inferenceAPIKey: process.env.GROQ_API_KEY,
embeddingsModel: 'text-embedding-3-small',
chunkSize: 800,
chunkOverlap: 200,
numberOfSimilarityResults: 2,
scanPages: 10,
nonOllamaBaseURL: 'https://api.groq.com/openai/v1',
useFunctionCalling: true,
useRateLimiting: false
};
- chunkSize / chunkOverlap:控制文本分块的大小和重叠部分,影响检索精度。
- numberOfSimilarityResults:设定参与生成的相关文档数量。
- useFunctionCalling:启用函数调用功能,可增强模型对工具的使用能力。
常见问题排查
- API Key 无效:检查环境变量是否加载正确,确认 Key 未过期。
- 响应超时:Groq 服务通常很快,若超时请检查网络连接或尝试切换模型。
- 内容无法提取:某些网站可能屏蔽爬虫,可尝试调整 Cheerio 解析规则或使用其他搜索引擎。
- 内存溢出:在处理大量文本时,适当减小
chunkSize或增加服务器内存。
功能特点总结
- 多模型融合:支持集成多种 AI 服务商的大型语言模型,如 OpenAI GPT 系列,为用户提供丰富且准确的答案来源。
- 高性能架构:运用 Groq 作为底层推理引擎,确保了在大规模数据环境下快速有效地检索和生成答案。
- 灵活性与扩展性:通过 Mixtral 和 Langchain 组件,项目具备极强的模块化和可扩展能力,方便开发者根据不同需求定制和增强问答引擎。
- 前端优化:依托 Next.js 框架,构建出响应式、高性能的用户界面,实现无缝的交互体验。
- 隐私与安全性:与 Brave 浏览器技术相结合,强化了用户数据保护和隐私安全措施。
行业展望
目前 AI 搜索领域发展迅速,国内外已有许多企业在发力,如 Kimi、秘塔搜索等。了解现有的一些实现方式,思考如何进一步创新非常重要。对于开发者而言,掌握此类项目的核心逻辑,有助于构建垂直领域的智能助手或知识库系统。
扩展建议
- 私有化部署:结合 Ollama 和 Docker,可实现完全离线的本地部署,保障数据安全。
- 知识库增强:接入企业私有文档,构建专属的企业级 RAG 系统。
- 多语言支持:扩展模型以支持非英语语言的检索与生成。
- 缓存机制:引入 Redis 缓存高频查询结果,降低 API 调用成本。
通过学习和实践 llm-answer-engine,开发者可以快速掌握 AI 搜索系统的构建方法,为未来的智能化应用开发打下坚实基础。


