bartjellema/NeoSearch
GitHub: bartjellema/NeoSearch
一款基于 .NET 9 构建的开源 AI 搜索引擎,通过智能摘要、多重视角分组和实时流式传输来提升网页搜索体验,同时坚持无广告、无追踪的隐私保护原则。
Stars: 21 | Forks: 1
# NeoSearch - AI 驱动的搜索引擎
**NeoSearch 是一个 100% 开源、由 AI 驱动的搜索引擎,它通过智能摘要、多重视角和实时流式传输结果来提升网页搜索体验。**
基于 ASP.NET Core 9.0 (.NET 9)、C# 13、Dapper、SQL Server 以及 Vue Petite 前端构建。
## 🌟 功能
- **100% 隐私 & 无广告**:无用户画像、无广告、无 Cookie、无 IP 日志
- **偏见感知排名**:AI 重新对结果进行排名,优先展示权威、独立的来源
- **即刻清晰**:AI 重写杂乱的网页标题和描述
- **多重视角**:将链接组织成逻辑分组,便于快速导航
- **AI 概览**:在完整结果旁边提供快速的 AI 摘要
- **更智能的回答 & 插件**:为常见查询(天气、单位换算等)提供即时结果
- **通用结果**:将单一服务的链接转换为跨多平台的结果
- **实时流式传输**:结果通过 Server-Sent Events 在生成时进行流式传输
## 🚀 快速开始
### 前置条件
- [.NET 9 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)
- SQL Server(或 SQL Server Express)
- 各项服务的 API keys(参见配置部分)
### 安装说明
1. **克隆仓库**
```
git clone https://github.com/bartjellema/NeoSearch.git
cd NeoSearch
```
2. **还原依赖项**
```
dotnet restore
```
3. **配置应用程序**
将 `appsettings.json.example` 复制为 `appsettings.json` 并填入你的 API keys:
```
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=NeoSearch;Trusted_Connection=true;TrustServerCertificate=True;"
},
"APIKeys": {
"GoogleSearch": "your-google-search-api-key",
"OpenAI": "your-openai-api-key",
// Add other API keys as needed
}
}
```
4. **运行数据库迁移**
抱歉,数据库 schema 创建脚本即将推出。
5. **构建并运行**
```
dotnet build
dotnet run --project Server
```
6. **访问应用程序**
在浏览器中打开 `https://localhost:5001`。
## 🏗️ 架构
NeoSearch 采用模块化、受 microservices 启发的架构构建:
### 核心组件
- **Server/** - 主 ASP.NET Core 应用程序
- **APIs/** - 外部服务集成(YouTube、Spotify、IMDB 等)
- **LLM/** - LLM provider 路由和响应生成
- **WebSearchService/** - Google 搜索 API 集成
- **Utils/** - 共享工具和辅助程序
- **ResultHandlers/** - 基于 URL 模式的结果增强器
- **Tests/** - 带有 HTTP 缓存系统的插件测试
### 关键模式
- **并行执行**:搜索任务并行运行以实现最佳性能
- **流式传输**:结果在生成时通过 SSE 进行流式传输
- **自动注册**:组件通过反射自动注册
- **插件系统**:用于专用功能的可扩展插件架构
## 🔧 配置
### 必需的 API Keys
创建账户并获取以下服务的 keys:
- **Google Custom Search API** - 核心搜索功能
- **OpenAI API**(或替代的 LLM providers)- AI 功能
- 可选:YouTube、Spotify、IMDB、Wikipedia 等,用于增强结果
## 🧪 测试
运行所有测试:
```
dotnet test
```
运行特定测试套件:
```
dotnet test --filter "FullyQualifiedName~StockPricePluginTests"
dotnet test --filter "FullyQualifiedName~YouTubeTests"
```
**注意**:测试套件使用 HTTP 缓存 - 首次运行会调用真实 API,后续运行使用缓存。
## 📚 文档
- [架构概述](docs/web_search_flow.md) - 详细的搜索流程说明
- [API 集成指南](docs/api_integration.md) - 添加新的 API 集成
- [插件开发](docs/plugin_development.md) - 创建自定义插件
- [结果处理器](docs/result_handlers.md) - 增强搜索结果
## 📜 许可证
本项目基于 Apache License 2.0 授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 🔗 链接
- [官方网站](https://neosearch.org)
- [文档](https://neosearch.org/docs)
- [Discord 社区](https://discord.gg/n59wbFTpWS)
- [GitHub 仓库](https://github.com/bartjellema/NeoSearch)
## 📧 联系方式
- 创始人:Bart Jellema
- 邮箱:b@neosearch.org
标签:AI摘要, ASP.NET Core, Dapper, SQL Server, Vue, 人工智能, 搜索引擎, 文件系统扫描, 用户模式Hook绕过