私有化AI搜索引擎FreeAskInternet

在这里插入图片描述

什么是 FreeAskInternet

FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统将使用 searxng 进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM 中,并根据搜索结果生成答案。所有进程都在本地运行,不需要 GPUOpenAIGoogle API 密钥。

软件特点

  • 🈚完全免费(不需要任何 API 密钥)
  • 💻 完全本地(无需 GPU,任何计算机都可以运行)
  • 🔐 完全私有(所有事情都在本地运行,使用自定义 llm)
  • 👻 在没有 LLM 硬件的情况下运行(不需要 GPU!)
  • 🤩 使用免费聊天GPT3.5,Qwen,Kimi,ZhipuAI(GLM)API(无需API密钥!Thx OpenAI)
  • 🐵 自定义LLM(ollama,llama.cpp)支持,是的,我们喜欢ollama!
  • 🚀 使用Docker Compose快速轻松地部署
  • 🌐 网络和移动友好界面,专为网络搜索增强的人工智能聊天而设计,允许从任何设备轻松访问。

之所以不要 OpenAIGoogle API 密钥,是因为借助了 freegpt35kimi-free-apiglm-free-apiqwen-free-api 等项目的帮助

而之所以不需要 GPU,则是因为用的是白嫖的线上大模型

所以个人研究使用就好,不要放在公网上

前言

在折腾 SearXNG 时,老苏提到过 FreeAskInternet。因为 SearXNG 元搜索引擎受网络影响比较大,所以老苏当时是不打算写基于 SearXNGAI 搜索应用的,比如:FreeAskInternetFarfalle

文章传送门:互联网元搜索引擎SearXNG

但转念一想,爱折腾的人,一个科学的网络(稳不稳定先放一边),应该是基本的配置吧 🙂

老苏把折腾的过程写出来,折腾或者不折腾,大家自己量力而行

安装

在群晖上以 Docker 方式安装。

涉及到多个容器,所以采用 docker-compose 安装方式,老苏根据自己的需要,对官方给的 docker-compose.yml 做了比较大的调整

官方完整的 docker-compose.yml:https://github.com/nashsu/FreeAskInternet/blob/main/docker-compose.yaml

  1. 利用了已经安装的 kimi-free-api,而且是通过 One-API 进行管理的,这个好处是,只要更改模型名称就可以切换不同的模型

文章传送门:大模型接口管理和分发系统One API

  1. 去掉了 chatgpt-next-web,因为这个老苏也是单独安装的,如果你希望能通过 chatgpt-next-web 使用 SearXNG 搜索的结果,理论上可以将 backend 的端口暴露出来,但老苏没试过

文章传送门:跨平台私人ChatGPT应用ChatGPT-Next-Web

将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  backend:
    image: nashsu/free_ask_internet:latest
    container_name: free_ask_internet_backend
    ports:
      - "3132:8000"
    restart: on-failure

  freeaskinternet-ui:
    image: nashsu/free_ask_internet_ui:latest
    container_name: free_ask_internet_ui
    ports:
      - "3133:80"
    environment:
      BACKEND_HOST: "backend:8000"
    depends_on:
      - backend
    restart: always
    
  searxng:
    image: searxng/searxng:latest
    container_name: free_ask_internet_searxng
    # ports:
    #  - "3135:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: 'json-file'
      options:
        max-size: '1m'
        max-file: '1'
    restart: always

然后执行下面的命令

# 新建文件夹 freeaskinternet 和 子目录
mkdir -p /volume1/docker/freeaskinternet/searxng

# 进入 freeaskinternet 目录
cd /volume1/docker/freeaskinternet

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3133 就能看到主界面

第一当然是选择模型了,因为我们没有安装 freegpt35kimi-free-apiglm-free-apiqwen-free-api,所以上面的不用管,直接勾选 使用自定义模型

  • URL 部分,因为老苏用的是 One API + kimi-free-api,所以这里填的是 One API 的地址
  • model auth token:填的是 One API 的访问令牌
  • model name :填的是渠道中的模型名称

保存之后,模型就灰掉了

开始第一个问题,但是你会发现,一直卡在这个界面

一开始,老苏也以为是网络问题,但实际上并不是,不信的话,你可以打开 searxng 的端口,访问 http://群晖IP:3135 ,随便搜索一个试试

老苏仔细查看了 backend 的日志,发现了有这么一条

requests.exceptions.HTTPError: 403 Client Error: FORBIDDEN for url: http://searxng:8080/search?q=%3Aall+%21general+%E4%BB%80%E4%B9%88%E6%98%AF+FreeAskInternet&format=json

在浏览器中直接输入 http://群晖IP:3135/search?q=%3Aall+%21general+%E4%BB%80%E4%B9%88%E6%98%AF+FreeAskInternet&format=json

确实是没权限访问的,这才是导致界面卡住的根本原因

找到了问题,解决起来就容易多了,找到 searxng 目录下的 settings.yml 文件

首先需要修改文件的权限,否则保存不了

search:
 formats:
  - html
  - json

修改完成后,建议再打开看看,确认是否修改成功了,如果修改成了,可以单独重启一次容器 free_ask_internet_searxng

再次刷新页面,参考搜索结果有了,但是还是提示搜索失败

再看看日志,原来是超时了

继续编辑 settings.yml 文件

outgoing:
  request_timeout: 5.0
  max_request_timeout: 10.0
  enable_http2: false

保存后

再次重启容器 free_ask_internet_searxng,搜索就没问题了

如果没有返回参考搜索结果的,但是告诉你搜索失败的,一般来说,应该是网络出问题了

像下面这样一声不吭的,说明模型设置可能也是不正确的

参考文档

nashsu/FreeAskInternet: FreeAskInternet is a completely free, private and locally running search aggregator & answer generate using LLM, without GPU needed. The user can ask a question and the system will make a multi engine search and combine the search result to the ChatGPT3.5 LLM and generate the answer based on search results.
地址:https://github.com/nashsu/FreeAskInternet

python 3.x - LangChain search_tools ValueError: ('Searx API returned an error: ', ‘Too Many Requests’) - Stack Overflow
地址:https://stackoverflow.com/questions/77253870/langchain-search-tools-valueerror-searx-api-returned-an-error-too-many-r

SearXNG | 中文 | Dify
地址:https://docs.dify.ai/v/zh-hans/guides/gong-ju/tool-configuration/searxng

Bug: all engine · Issue #334 · searxng/searxng
地址:https://github.com/searxng/searxng/issues/334

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/695654.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

⌈ 传知代码 ⌋ 基于曲率的图重新布线

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

数据库索引压力测试

本实验测试数据库在有索引和五索引内容上的查询时间随着数据量级增长的变化 测试的表结构 使用一个菜单的数据库表,包括菜品的ID,菜品名和价格 CREATE TABLE Menu (dish_id int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,dish_name varchar(255)…

高通Android开关机动画踩坑简单记录

1、下面报错有可能是selinux的原因 Read-only file system 2、接着push 动画 reboot之后抓取logcat出现 ,以下这个报错。看着像是压缩格式有问题。 3、于是重新压缩一下报错没有再出现 ,压缩格式默认是标准,这里必须要改成存储格式哈 4、修改…

matlab演示地月碰撞

代码 function EarthMoonCollisionSimulation()% 初始化参数earth_radius 6371; % 地球半径,单位:公里moon_radius 1737; % 月球半径,单位:公里distance 384400; % 地月距离,单位:公里collision_tim…

Signac|成年小鼠大脑 单细胞ATAC分析(2)

引言 在本教程中,我们将探讨由10x Genomics公司提供的成年小鼠大脑细胞的单细胞ATAC-seq数据集。本教程中使用的所有相关文件均可在10x Genomics官方网站上获取。 本教程复现了之前在人类外周血单核细胞(PBMC)的Signac入门教程中执行的命令。…

【linux】进程控制——进程创建,进程退出,进程等待

个人主页:东洛的克莱斯韦克-CSDN博客 祝福语:愿你拥抱自由的风 相关文章 【Linux】进程地址空间-CSDN博客 【linux】详解linux基本指令-CSDN博客 目录 进程控制概述 创建子进程 fork函数 父子进程执行流 原理刨析 常见用法 出错原因 进程退出 概…

7-43 排列问题

排列问题 分数 10 全屏浏览 切换布局 作者 雷丽兰 单位 宜春学院 全排列问题 输出自然数1至n中n个数字的全排列(1≤n≤9),要求所产生的任一数字序列中不允许出现重复的数字。 输入格式: 一个自然数 输出格式: 由1到n中n个数字组成的…

Python魔法之旅专栏(导航)

目录 推荐阅读 1、Python筑基之旅 2、Python函数之旅 3、Python算法之旅 4、博客个人主页 首先,感谢老铁们一直以来对我的支持与厚爱,让我能坚持把Python魔法方法专栏更新完毕! 其次,为了方便大家查阅,我将此专栏…

freertos中的链表1 - 链表的数据结构

1.概述 freertos中链表的实现在 list.c 和 list.h。旨在通过学习freertos中的链表的数据结构,对freertos中的链表实现有一个整体的认识。freertos使用了三个数据结构来描述链表,分别是:List_t, MiniListItem_t,ListIt…

【Linux】进程6——环境变量

1.什么是环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 比如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功&…

Windows 10 找不到Microsoft Edge 浏览器

下载链接 了解 Microsoft Edge 手动下载浏览器 问题说明 一般来说,windows10系统应该是自带浏览器edge的,但有的电脑就是没有找到edge浏览器,可能系统是精简过的,可能是被卸载了。如下,控制面板确实没找到程序。 ​ …

笔记本充电出现了问题。

不知道为什么。电池充电图片一直显示的空。谁能救救我!

C++命名空间的定义、C++命名空间的使用、C++输入输出等的介绍

文章目录 前言一、C命名空间的定义1. C命名空间产生的原因2. 作用域限定符3. C变量的访问顺序 二、C命名空间的使用1. 加命名空间名称及作用域限定符2. 使用using将命名空间中某个成员引入3. 使用using namespace 命名空间名称 引入4. 嵌套命名空间使用 三、 C输入&输出总结…

天才程序员周弈帆 | Stable Diffusion 解读(二):论文精读

本文来源公众号“天才程序员周弈帆”,仅用于学术分享,侵权删,干货满满。 原文链接:Stable Diffusion 解读(二):论文精读 【小小题外话】端午安康! 在上一篇文章天才程序员周弈帆 …

C#操作MySQL从入门到精通(14)——汇总数据

前言 我们有时候需要对数据库查询的值进行一些处理,比如求平均值等操作,本文就是详细讲解这些用法,本文测试使用的数据库数据如下: 1、求平均值 求所有student_age 列的平均值 string sql = string.Empty; if (radioButton_AVG.Checked) {sql = “select AVG( student_…

《Vue》系列文章目录

Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以…

真北游记|三江交汇,碧海苍梧,端午去梧州吃龟苓膏

准备 t-14:高铁抢票(A) t-14:订行程(B)酒店(C) T-2:准备水、零食 T-1:物质准备:衣服、纸巾、毛巾、雨伞🌂、拖鞋、口罩😷(D&#xff0…

phpstudy的安装dvwa

phpstudy安装dvwa 1. 下载phpstudy Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn) 2. 搭建dvwa靶场 下载地址:https://github.com/ethicalhack3r/DVWA/archive/master.zip 将其放入www文件夹中 3. 修改配置文件 将\DVWA-master\config中config.inc.php…

【深度揭秘】ChatGPT如何成为智能对话的领头羊?万字详解其背后的核心技术!

最近,OpenAI的预训练模型ChatGPT给人工智能领域的研究人员留下了深刻的印象和启发。毫无疑问,它非常强大,与之交流十分有趣,还能编写代码。它在多个方面的表现远超自然语言处理研究者的预期。因此,我们不禁要问&#x…

Nginx之正向代理配置示例和说明

一、NGINX正向代理功能简介 Nginx的正向代理功能允许局域网中的客户端通过代理服务器访问Internet资源。具体来说,Nginx作为一种流行的Web服务器和反向代理服务器,在正向代理方面的应用也相当实用。以下是其正向代理功能的几个关键点: 访问外…