私有化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:latestcontainer_name: free_ask_internet_backendports:- "3132:8000"restart: on-failurefreeaskinternet-ui:image: nashsu/free_ask_internet_ui:latestcontainer_name: free_ask_internet_uiports:- "3133:80"environment:BACKEND_HOST: "backend:8000"depends_on:- backendrestart: alwayssearxng:image: searxng/searxng:latestcontainer_name: free_ask_internet_searxng# ports:#  - "3135:8080"volumes:- ./searxng:/etc/searxng:rwenvironment:- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/cap_drop:- ALLcap_add:- CHOWN- SETGID- SETUIDlogging: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.0max_request_timeout: 10.0enable_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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python私教张大鹏 Vue3整合AntDesignVue之Breadcrumb 面包屑

显示当前页面在系统层级结构中的位置&#xff0c;并能向上返回。 何时使用 当系统拥有超过两级以上的层级结构时&#xff1b; 当需要告知用户『你在哪里』时&#xff1b; 当需要向上导航的功能时。 案例&#xff1a;面包屑导航基本使用 核心代码&#xff1a; <template…

【Linux文件篇】系统文件、文件描述符与重定向的实用指南

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;相信大家对文件都不会太陌生、也不会太熟悉。在没有学习Linux操作系统时&#xff0c;我们在学习C或C时都学过如何去创建、打开、读写等待文件的操作&#xff0c;知道一些语言级别的一些接口与函数。但…

【Anaconda】 anaconda常用命令总结

【Anaconda】 anaconda常用命令总结 一、创建虚拟环境二、激活/使用/进入某个虚拟环境三、退出当前环境四、复制某个虚拟环境五、删除某个环境六、查看当前所有环境七、查看当前虚拟环境下的所有安装包八、安装或卸载包(进入虚拟环境之后&#xff09;九、分享虚拟环境十、源服务…

leetcode刷题记录34-100297. 找到连续赢 K 场比赛的第一位玩家

问题描述 有 n 位玩家在进行比赛&#xff0c;玩家编号依次为 0 到 n - 1 。 给你一个长度为 n 的整数数组 skills 和一个 正 整数 k &#xff0c;其中 skills[i] 是第 i 位玩家的技能等级。skills 中所有整数 互不相同 。 所有玩家从编号 0 到 n - 1 排成一列。 比赛进行方式如…

实体商铺私域流量打造策略:从引流到转化的全链路解析

在数字化时代&#xff0c;实体商铺面临着前所未有的挑战与机遇。随着线上购物的兴起&#xff0c;传统商铺如何吸引并留住顾客&#xff0c;成为了每个实体店家必须面对的问题。私域流量的打造&#xff0c;正是解决这一问题的关键所在。本文将从引流、留存、转化三个方面&#xf…

Java基础教程 - 15 进阶部分

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 15 进阶部分 网络编程、注解、反射、泛型、新特性等&#xff0c;见高级部分。 继续学习 Java进阶教程

冯喜运:6.10周一黄金原油行情趋势分析及独家操作建议

【黄金消息面分析】&#xff1a;上周全球金融市场惊现戏剧性大逆转&#xff0c;美国多项经济数据证实劳动力市场降温&#xff0c;9月降息重返视野令全球风险情绪几乎陷入狂热状态&#xff0c;全球股市接连创新高&#xff0c;但上周五意外“爆表”的非农令市场惊现大逆转&#x…

基于pytorch_lightning测试resnet18不同激活方式在CIFAR10数据集上的精度

基于pytorch_lightning测试resnet18不同激活方式在CIFAR10数据集上的精度 一.曲线1.train_acc2.val_acc3.train_loss4.lr 二.代码 本文介绍了如何基于pytorch_lightning测试resnet18不同激活方式在CIFAR10数据集上的精度 特别说明: 1.NoActive:没有任何激活函数 2.SparseActiva…

Spring (49)OpenFeign

OpenFeign是Spring Cloud在Feign的基础上进行了增强&#xff0c;使其更易于与Spring Boot应用集成。它提供了一种声明式的方法来调用HTTP服务&#xff0c;从而简化了服务间调用的开发。下面我们将通过源码解析和代码演示来深入理解OpenFeign的工作原理及其使用方法。 1. 核心概…

调研管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;教师类型管理&#xff0c;课程类型管理&#xff0c;公告类型管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;论坛&#…

【JS封装-工具函数】强化编程实践:精选JavaScript函数封装集锦-关于工具函数 (如深度克隆、浅拷贝、递归、防抖和节流等)

目录 浅拷贝 深度克隆 递归函数示例&#xff1a;计算数组深度 防抖函数 节流函数 扁平化数组 检查对象是否为空 生成随机字符串 深度比较两个对象是否相等 浅拷贝 /*** 浅拷贝对象或数组。* param {Object|Array} obj 要拷贝的对象或数组。* returns {Object|Array} …

腾讯云和windows11安装frp,实现内网穿透

一、内网穿透目的 实现公网上&#xff0c;访问到windows上启动的web服务 二、内网穿透的环境准备 公网服务器、windows11的电脑、frp软件(需要准备两个软件&#xff0c;一个是安装到公网服务器上的&#xff0c;一个是安装到windows上的) frp下载地址下载版本 1.此版本(老版…

C/C++|std::function 浅度解析

std::function 是 C 标准库中的一个通用多态函数包装器。它可以存储、复制和调用任意可调用目标&#xff08;函数、lambda 表达式、绑定表达式或其他函数对象&#xff09;。 std::function 占有固定尺寸的内存&#xff0c;这是因为它的实现方式决定了这一点。让我们深入探讨这一…

论文阅读:Indoor Scene Layout Estimation from a Single Image

项目地址&#xff1a;https://github.com/leVirve/lsun-room/tree/master 发表时间&#xff1a;2018 icpr 场景理解&#xff0c;在现实交互的众多方面中&#xff0c;因其在增强现实&#xff08;AR&#xff09;等应用中的相关性而得到广泛关注。场景理解可以分为几个子任务&…

C++ 内联函数 auto关键字

内联函数 用inline修饰的函数会成为内联函数&#xff0c;内联函数会在编译的阶段在调用函数的位置进行展开&#xff0c;不会涉及建立栈帧以提高效率&#xff0c;同时每一次的函数调用都会展开整个函数导致内存消耗的增加&#xff0c;是以空间换时间&#xff0c;所以内联函数比…

SpringSecurity入门(二)

8、获取用户认证信息 三种策略模式&#xff0c;调整通过修改VM options // 如果没有设置自定义的策略&#xff0c;就采用MODE_THREADLOCAL模式 public static final String MODE_THREADLOCAL "MODE_THREADLOCAL"; // 采用InheritableThreadLocal&#xff0c;它是Th…

最新下载:Navicat for MySQL 11软件安装视频教程

软件简介&#xff1a; Navicat for MySQL 是一款强大的 MySQL 数据库管理和开发工具&#xff0c;它为专业开发者提供了一套强大的足够尖端的工具&#xff0c;但对于新用户仍然易于学习。Navicat For Mysql中文网站&#xff1a;http://www.formysql.com/ Navicat for MySQL 基于…

NLP实战入门——文本分类任务(TextRNN,TextCNN,TextRNN_Att,TextRCNN,FastText,DPCNN,BERT,ERNIE)

本文参考自https://github.com/649453932/Chinese-Text-Classification-Pytorch?tabreadme-ov-file&#xff0c;https://github.com/leerumor/nlp_tutorial?tabreadme-ov-file&#xff0c;https://zhuanlan.zhihu.com/p/73176084&#xff0c;是为了进行NLP的一些典型模型的总…

如何远程桌面连接?

远程桌面连接是一种方便快捷的方式&#xff0c;可以帮助用户在不同地区的设备之间实现信息的远程通信。我们将介绍一种名为【天联】的组网产品&#xff0c;它可以帮助用户轻松实现远程桌面连接。 【天联】组网是一款异地组网内网穿透产品&#xff0c;由北京金万维科技有限公司…

绿联Nas docker 中 redis 老访问失败的排查

部署了一些服务&#xff0c;老隔3-5 天其他服务就联不上 redis 了&#xff0c;未确定具体原因&#xff0c;只记录观察到的现象 宿主机访问 只有 ipv6 绑定了&#xff0c;ipv4 绑定挂掉了 其他容器访问 也无法访问成功 当重启容器后&#xff1a; 一切又恢复正常。 可能的解…