[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-swirlai--swirl-search":3,"tool-swirlai--swirl-search":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,52],"视频",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[14,35],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":102,"forks":103,"last_commit_at":104,"license":105,"difficulty_score":32,"env_os":106,"env_gpu":107,"env_ram":107,"env_deps":108,"category_tags":119,"github_topics":121,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":137,"updated_at":138,"faqs":139,"releases":140},4289,"swirlai\u002Fswirl-search","swirl-search","AI Search & RAG Without Moving Your Data. Get instant answers from your company's knowledge across 100+ apps while keeping data secure. Deploy in minutes, not months.","swirl-search 是一款专为企业管理知识打造的 AI 搜索与检索增强生成（RAG）工具。它的核心使命是让团队在不移动任何数据的前提下，安全地利用分布在 100 多种企业应用（如 Microsoft 365、SharePoint、Confluence、GitHub 等）中的私有数据，即时获取带有来源引用的精准答案。\n\n传统方案往往需要构建复杂的向量数据库、迁移数据并耗费数周搭建 ETL 管道，不仅实施成本高，还带来数据安全隐患。swirl-search 彻底解决了这些痛点：它无需向量数据库，数据始终保留在原有系统中，仅需一条 Docker 命令即可在几分钟内完成部署，同时严格遵循企业原有的权限控制，确保数据安全合规。\n\n这款工具非常适合希望快速落地内部 AI 助手的企业开发者、IT 管理员以及需要高效检索内部文档的业务团队。无论是构建知识库问答机器人、客户支持助手，还是研发代码检索工具，swirl-search 都能让非技术人员轻松上手。其独特的技术亮点在于“原地检索”架构，既避免了数据冗余和搬迁风险，又通过智能重排序技术提供比通用搜索引擎更懂企业上下文的搜索结果，帮助团队平均每","swirl-search 是一款专为企业管理知识打造的 AI 搜索与检索增强生成（RAG）工具。它的核心使命是让团队在不移动任何数据的前提下，安全地利用分布在 100 多种企业应用（如 Microsoft 365、SharePoint、Confluence、GitHub 等）中的私有数据，即时获取带有来源引用的精准答案。\n\n传统方案往往需要构建复杂的向量数据库、迁移数据并耗费数周搭建 ETL 管道，不仅实施成本高，还带来数据安全隐患。swirl-search 彻底解决了这些痛点：它无需向量数据库，数据始终保留在原有系统中，仅需一条 Docker 命令即可在几分钟内完成部署，同时严格遵循企业原有的权限控制，确保数据安全合规。\n\n这款工具非常适合希望快速落地内部 AI 助手的企业开发者、IT 管理员以及需要高效检索内部文档的业务团队。无论是构建知识库问答机器人、客户支持助手，还是研发代码检索工具，swirl-search 都能让非技术人员轻松上手。其独特的技术亮点在于“原地检索”架构，既避免了数据冗余和搬迁风险，又通过智能重排序技术提供比通用搜索引擎更懂企业上下文的搜索结果，帮助团队平均每周节省大量重复查找信息的时间。","\u003Cdiv align=\"center\">\n\n[![SWIRL](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_1387181a732d.png)](https:\u002F\u002Fwww.swirlaiconnect.com)\n\n\u003C\u002Fdiv>\n\n\u003Ch1>SWIRL\u003C\u002Fh1>\n\n## Give your team ChatGPT-level search without moving data to the cloud\n\n### RAG with One Drive & Microsoft 365 in 60 seconds\n\nAsk question → Get answer with sources → Click through to source\n\n![SWIRL One Drive RAG](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_645cbb35cbfe.gif)\n\nWatch it on [Youtube](https:\u002F\u002Fyoutu.be\u002F6cT25SD4cV4)\n\n**Teams using SWIRL saves an average 7.5 hours of productive time per week.**\n\n\u003Cdiv align=\"center\">\n\n[⚡ Quick Start](#-try-swirl-now-in-docker) ·\n[🔌 Connectors](swirlaiconnect.com\u002Fconnectors) ·\n[🤝 Contribute](#contributing)\n\n[![License: Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg?color=088395&logoColor=blue&style=flat-square)](https:\u002F\u002Fopensource.org\u002Flicense\u002Fapache-2-0\u002F)\n[![GitHub Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fswirlai\u002Fswirl-search?style=flat-square&color=8DDFCB&label=Release)](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Freleases)\n[![Website](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWebsite-swirlaiconnect.com-00215E?style=flat-square)](https:\u002F\u002Fwww.swirlaiconnect.com)\n[![Time Saved](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHours%20Saved-10K%2B-brightgreen)]()\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fswirlai\u002Fswirl-search?style=social)](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fstargazers)\n\n[![Test and Build Pipeline](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Factions\u002Fworkflows\u002Ftest-build-pipeline.yml\u002Fbadge.svg?style=flat-square&branch=main)](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Factions\u002Fworkflows\u002Ftest-build-pipeline.yml)\n\n\u003C\u002Fdiv>\n\n[![Bringing AI to the Data Newsletter](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_0bc9cd7ed9cd.png)](https:\u002F\u002Fwww.linkedin.com\u002Fnewsletters\u002F7201909550860427264\u002F)\n\n## 🤔 Why SWIRL?\n\n### Skip the Complexity, Keep the Power\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\n\u003Ch3 align=\"center\">❌ Without SWIRL\u003C\u002Fh3>\n\n- Set up vector databases\n- Move data around\n- Complex ETL pipelines\n- Weeks of infrastructure work\n- Security headaches\n\n\u003C\u002Ftd>\n\u003Ctd>\n\u003Ch3 align=\"center\">✅ With SWIRL\u003C\u002Fh3>\n\n- One docker command\n- Data stays in place\n- No vector DB needed\n- 2-minute setup\n- Enterprise-grade security\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 🚀 Built Different\n\n### No Vector DB Drama\n\n```bash\n# No need for:\n$ setup-vector-db\n$ migrate-data\n$ configure-indexes\n\n# Just this:\n$ curl https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml -o docker-compose.yaml\n```\n\n## 💡 What Can You Build With SWIRL?\n\nReal examples of what teams build with SWIRL:\n\n### 🔍 Knowledge Base Search\n\n- Connect SharePoint, Confluence, & Drive\n- Get instant answers with source links\n- Keep sensitive data secure\n\n### 🤖 Customer Support Assistant\n\n- Search across support docs & tickets\n- Draft responses using your content\n- Maintain consistent answers\n\n### 👩‍💻 Developer Assistant\n\n- Search GitHub, Jira, & documentation\n- Find code examples & solutions\n- Speed up development workflow\n\n### 🏢 Unified Search\n\n- Unified search across all tools\n- Results respect existing permissions\n- No data duplication needed\n\n### 👀 See it in action\n\n![SWIRL Chat in Action](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_582389efa07a.gif)\n\n## Schedule Your [Free Demo](https:\u002F\u002Fswirlaiconnect.com\u002Fcontact-us) of SWIRL Enterprise\n\n**Try SWIRL Enterprise for free for 30 Days. Click on the banner to contact us.**\n\n[![SWIRL Assistant](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_7d119a3113bc.png)](https:\u002F\u002Fswirlaiconnect.com\u002Fcontact-us)\n\n### ⚡ Why Teams Choose SWIRL\n\n- 🔒 Your infrastructure, your control\n- 🚀 Deploy in minutes, not months\n- 🔌 100+ enterprise connectors\n- 🤖 AI that respects your security\n\n## SWIRL's Ranking in Action\n\nSWIRL doesn't just search - it understands your company's context. Instead of broad web results, you get precise answers from your private data, right where it lives.\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Ypn4XvSJfcQ\" target=\"_blank\">\n\n![SWIRL vs Google Ranking](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_ec62154e3b24.png)\n\n\u003C\u002Fa>\n\n## SWIRL Features\n\n![Features 1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_576547db7944.png)\n![Features 2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_ce011399c84e.png)\n\n\u003Cbr\u002F>\n\n### **Full list of connectors is available [here](https:\u002F\u002Fswirlaiconnect.com\u002Fconnectors)**\n\n**For Support on Connectors**  Contact the Swirl Team at: [support@swirlaiconnect.com](mailto:support@swirlaiconnect.com)  \n\n\u003Cbr\u002F>\n\n# 🔥 Try Swirl Now In Docker\n\n## Prerequisites\n\n- To run Swirl in Docker, you must have the latest [Docker app](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) for MacOS, Linux, or Windows installed and running locally. You can also watch the [**video tutorial**](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=OogRYkfSki8) to get started.\n\n- Windows users must also install and configure either the WSL 2 or the Hyper-V backend, as outlined in the  [System Requirements for installing Docker Desktop on Windows](https:\u002F\u002Fdocs.docker.com\u002Fdesktop\u002Finstall\u002Fwindows-install\u002F#system-requirements).\n\n## Start Swirl in Docker\n\n> **Warning**\n> Make sure the Docker app is running before proceeding!\n\n- Download the YAML file: [https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml)\n\n```bash\ncurl https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml -o docker-compose.yaml\n```\n\n- *Optional*: To enable Swirl's Real-Time Retrieval Augmented Generation (RAG) in Docker, run the following commands from the Console using a valid OpenAI API key:\n  \n``` shell\nexport MSAL_CB_PORT=8000\nexport MSAL_HOST=localhost\nexport OPENAI_API_KEY=‘\u003Cyour-OpenAI-API-key>’\n```\n\n:key: Check out [OpenAI's YouTube video](https:\u002F\u002Fyoutu.be\u002FnafDyRsVnXU?si=YpvyaRvhX65vtBrb) if you don't have an OpenAI API Key.\n\n- In MacOS or Linux, run the following command from the Console:\n\n```bash\ndocker-compose pull && docker-compose up\n```\n\n- In Windows, run the following command from PowerShell:\n\n```bash\ndocker compose up\n```\n\nAfter a few minutes the following or similar should appear:\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_c9ca92c8b5ff.png\" height=\"70%\" width=\"90%\">\n\n- Open this URL with a browser: \u003Chttp:\u002F\u002Flocalhost:8000> (or \u003Chttp:\u002F\u002Flocalhost:8000\u002Fgalaxy>)\n\n- If the search page appears, click `Log Out` at the top, right. The Swirl login page will appear.\n\n- Enter the username `admin` and password `password`, then click `Login`.\n\n- Enter a search in the search box and press the `Search` button. Ranked results appear in just a few seconds:\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_06c0d8751eac.png\" height=\"70%\" weight=\"70%\" style=\"border-radius: 10px;\">\n\n- To view the raw JSON, open \u003Chttp:\u002F\u002Flocalhost:8000\u002Fswirl\u002Fsearch\u002F>\n\nThe most recent Search object will be displayed at the top. Click on the `result_url` link to view the full JSON Response.\n\n## Notes 📝\n\n> **Warning**\n> The Docker version of Swirl *does not* retain any data or configuration when shut down!\n\n:key: Swirl comes configured to search Arxiv, European PMC and Google News right out of the box.\n\n:key: Using Swirl with Microsoft 365 requires installation and approval by an authorized company Administrator. For more information, please review the [M365 Guide](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FM365-Guide.html) or [contact us](mailto:hello@swirlaiconnect.com).\n\n## Next Steps 👇\n\n- Check out the details of our [latest release](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Freleases)!\n\n- Head over to the [Quick Start Guide](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FQuick-Start.html) and install Swirl locally!\n\n## Video Tutorial\n\nGuide to Run SWIRL in Docker in 60 seconds.\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Ypn4XvSJfcQ\" target=\"_blank\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_948f29146096.jpg\" height=\"200px\" width=\"400px\"\u002F>\n\n\u003C\u002Fa>\n\n\u003Cbr\u002F>\n\n# 🌟 Key Features\n\n| ✦ | Feature |\n|:-----:|:--------|\n| 📌 | [Microsoft 365 integration and OAUTH2 support](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FM365-Guide.html) |\n| 🔍 | [SearchProvider configurations](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002FSearchProviders) for all included Connectors. They can be [organized with the active, default and tags properties](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FUser-Guide.html#organizing-searchproviders-with-active-default-and-tags). |\n| ✏️ | [Adaptation of the query for each provider](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FUser-Guide.html#search-syntax) such as rewriting `NOT term` to `-term`, removing NOTted terms from providers that don't support NOT, and passing down the AND, + and OR operators. |\n| ⏳ | [Synchronous or asynchronous search federation](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#architecture) via [APIs](http:\u002F\u002Flocalhost:8000\u002Fswirl\u002Fswagger-ui\u002F) |\n| 🛎️ | [Optional subscribe feature](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#subscribe-to-a-search) to continuously monitor any search for new results |\n| 🛠️ | Pipelining of [Processor](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#develop-new-processors) stages for real-time adaptation and transformation of queries, responses and results |\n| 🗄️ | [Results stored](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#result-objects) in SQLite3 or PostgreSQL for post-processing, consumption and\u002For analytics |\n| ➡️ | Built-in [Query Transformation](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#using-query-transformations) support, including re-writing and replacement |\n| 📖 | [Matching on word stems](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#cosinerelevancypostresultprocessor) and [handling of stopwords](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#configure-stopwords-language) via NLTK |\n| 🚫 | [Duplicate detection](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#detect-and-remove-duplicate-results) on field or by configurable Cosine Similarity threshold |\n| 🔄 | Re-ranking of unified results [using Cosine Vector Similarity](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#cosinerelevancypostresultprocessor) based on [spaCy](https:\u002F\u002Fspacy.io\u002F)'s large language model and [NLTK](https:\u002F\u002Fwww.nltk.org\u002F) |\n| 🎚️ | [Result mixers](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#mixers-1) order results by relevancy, date or round-robin (stack) format, with optional filtering of just new items in subscribe mode |\n| 📄 | Page through all results requested, re-run, re-score and update searches using URLs provided with each result set |\n| 📁 | [Sample data sets](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002FData) for use with SQLite3 and PostgreSQL |\n| ✒️ | [Optional spell correction](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#add-spelling-correction) using [TextBlob](https:\u002F\u002Ftextblob.readthedocs.io\u002Fen\u002Fdev\u002Fquickstart.html#spelling-correction) |\n| ⌛ | [Optional search\u002Fresult expiration service](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FAdmin-Guide.html#search-expiration-service) to limit storage use |\n| 🔌 | Easily extensible [Connector](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002Fswirl\u002Fconnectors) and [Mixer](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002Fswirl\u002Fmixers) objects |\n\n\u003Cbr\u002F>\n\n# ☁ Use the Swirl Cloud\n\nFor information about Swirl as a managed service, please [contact us](mailto:hello@swirlaiconnect.com)!\n\n\u003Cbr\u002F>\n\n# 📖 Documentation\n\n🔗 [SWIRL Documentation](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F)\n\n\u003Cbr\u002F>\n\n# 👷‍♂️ Need Help? We're Here for You\n\nAt Swirl, every user matters to us. Whether you're a beginner finding your way or an expert with feedback, we're here to support, listen, and help. Don't hesitate to reach out to us.\n\n- **Direct Support:** For any questions, suggestions, or even a simple hello, drop us an email at [support@swirlaiconnect.com](mailto:support@swirlaiconnect.com). We cherish every message and promise to get back to you promptly!\n\n- **Request A Connector (Enterprise Support)** Want to see a new connector quickly and fast? Contact us: [support@swirlaiconnect.com](mailto:support@swirlaiconnect.com)\n","\u003Cdiv align=\"center\">\n\n[![SWIRL](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_1387181a732d.png)](https:\u002F\u002Fwww.swirlaiconnect.com)\n\n\u003C\u002Fdiv>\n\n\u003Ch1>SWIRL\u003C\u002Fh1>\n\n## 让您的团队无需将数据迁移至云端即可享受ChatGPT级别的搜索体验\n\n### 60秒内实现OneDrive与Microsoft 365的RAG功能\n\n提问 → 获取带来源的答案 → 点击跳转至原文\n\n![SWIRL OneDrive RAG](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_645cbb35cbfe.gif)\n\n在[YouTube](https:\u002F\u002Fyoutu.be\u002F6cT25SD4cV4)上观看\n\n**使用SWIRL的团队每周平均节省7.5小时的工作时间。**\n\n\u003Cdiv align=\"center\">\n\n[⚡ 快速入门](#-try-swirl-now-in-docker) ·\n[🔌 连接器](swirlaiconnect.com\u002Fconnectors) ·\n[🤝 贡献](#contributing)\n\n[![许可证：Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg?color=088395&logoColor=blue&style=flat-square)](https:\u002F\u002Fopensource.org\u002Flicense\u002Fapache-2-0\u002F)\n[![GitHub发布](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fswirlai\u002Fswirl-search?style=flat-square&color=8DDFCB&label=Release)](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Freleases)\n[![官网](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWebsite-swirlaiconnect.com-00215E?style=flat-square)](https:\u002F\u002Fwww.swirlaiconnect.com)\n[![节省时间](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHours%20Saved-10K%2B-brightgreen)]()\n[![GitHub星标](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fswirlai\u002Fswirl-search?style=social)](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fstargazers)\n\n[![测试与构建流水线](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Factions\u002Fworkflows\u002Ftest-build-pipeline.yml\u002Fbadge.svg?style=flat-square&branch=main)](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Factions\u002Fworkflows\u002Ftest-build-pipeline.yml)\n\n\u003C\u002Fdiv>\n\n[![将AI引入数据通讯录](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_0bc9cd7ed9cd.png)](https:\u002F\u002Fwww.linkedin.com\u002Fnewsletters\u002F7201909550860427264\u002F)\n\n## 🤔 为什么选择SWIRL？\n\n### 跳过复杂性，保留强大功能\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\n\u003Ch3 align=\"center\">❌ 没有SWIRL\u003C\u002Fh3>\n\n- 需要搭建向量数据库\n- 数据需要迁移\n- 复杂的ETL流程\n- 数周的基础架构工作\n- 安全隐患\n\n\u003C\u002Ftd>\n\u003Ctd>\n\u003Ch3 align=\"center\">✅ 有了SWIRL\u003C\u002Fh3>\n\n- 一条Docker命令即可\n- 数据原地不动\n- 无需向量数据库\n- 2分钟完成设置\n- 企业级安全保障\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 🚀 构建方式与众不同\n\n### 无需向量数据库的麻烦\n\n```bash\n# 不再需要：\n$ setup-vector-db\n$ migrate-data\n$ configure-indexes\n\n# 只需这一步：\n$ curl https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml -o docker-compose.yaml\n```\n\n## 💡 使用SWIRL能构建什么？\n\n团队使用SWIRL的实际案例：\n\n### 🔍 知识库搜索\n\n- 连接SharePoint、Confluence和Drive\n- 即时获取带来源链接的答案\n- 保障敏感数据安全\n\n### 🤖 客户支持助手\n\n- 搜索支持文档和工单\n- 根据现有内容起草回复\n- 保持答案一致性\n\n### 👩‍💻 开发者助手\n\n- 搜索GitHub、Jira和文档\n- 查找代码示例和解决方案\n- 加快开发流程\n\n### 🏢 统一搜索\n\n- 跨所有工具进行统一搜索\n- 搜索结果遵循现有权限\n- 无需数据复制\n\n### 👀 实际演示\n\n![SWIRL聊天实战](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_582389efa07a.gif)\n\n## 预约您的SWIRL Enterprise[免费演示](https:\u002F\u002Fswirlaiconnect.com\u002Fcontact-us)\n\n**免费试用SWIRL Enterprise 30天。点击横幅联系我们。**\n\n[![SWIRL助手](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_7d119a3113bc.png)](https:\u002F\u002Fswirlaiconnect.com\u002Fcontact-us)\n\n### ⚡ 为什么团队选择SWIRL？\n\n- 🔒 您的基础设施，您来掌控\n- 🚀 几分钟部署，而非数月\n- 🔌 100多种企业级连接器\n- 🤖 尊重您安全性的AI\n\n## SWIRL的排名实力展现\n\nSWIRL不仅会搜索，更能理解您公司的业务背景。它不会给出泛泛的网络结果，而是从您私有的数据中精准提取答案，直接在数据所在的位置提供服务。\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Ypn4XvSJfcQ\" target=\"_blank\">\n\n![SWIRL vs Google排名](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_ec62154e3b24.png)\n\n\u003C\u002Fa>\n\n## SWIRL的功能特性\n\n![功能1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_576547db7944.png)\n![功能2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_ce011399c84e.png)\n\n\u003Cbr\u002F>\n\n### **完整连接器列表请见[这里](https:\u002F\u002Fswirlaiconnect.com\u002Fconnectors)**\n\n**关于连接器的支持** 请联系Swirl团队：[support@swirlaiconnect.com](mailto:support@swirlaiconnect.com)  \n\n\u003Cbr\u002F>\n\n# 🔥 现在就用Docker试用SWIRL\n\n## 前提条件\n\n- 要在Docker中运行SWIRL，您必须在本地安装并运行最新版本的[Docker应用](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F)，适用于MacOS、Linux或Windows。您也可以观看[**视频教程**](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=OogRYkfSki8)以快速上手。\n\n- Windows用户还需按照[在Windows上安装Docker Desktop的系统要求](https:\u002F\u002Fdocs.docker.com\u002Fdesktop\u002Finstall\u002Fwindows-install\u002F#system-requirements)中的说明，安装并配置WSL 2或Hyper-V后端。\n\n## 在Docker中启动SWIRL\n\n> **警告**\n> 请确保Docker应用程序已运行后再继续！\n\n- 下载YAML文件：[https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml)\n\n```bash\ncurl https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml -o docker-compose.yaml\n```\n\n- *可选*：要在Docker中启用SWIRL的实时检索增强生成（RAG），请使用有效的OpenAI API密钥，在终端中执行以下命令：\n\n``` shell\nexport MSAL_CB_PORT=8000\nexport MSAL_HOST=localhost\nexport OPENAI_API_KEY=‘\u003Cyour-OpenAI-API-key>’\n```\n\n:key: 如果您还没有OpenAI API密钥，请观看[OpenAI的YouTube视频](https:\u002F\u002Fyoutu.be\u002FnafDyRsVnXU?si=YpvyaRvhX65vtBrb)。\n\n- 在MacOS或Linux中，从终端运行以下命令：\n\n```bash\ndocker-compose pull && docker-compose up\n```\n\n- 在Windows中，从PowerShell运行以下命令：\n\n```bash\ndocker compose up\n```\n\n几分钟后，您应该会看到如下界面或类似的内容：\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_c9ca92c8b5ff.png\" height=\"70%\" width=\"90%\">\n\n- 使用浏览器打开此URL： \u003Chttp:\u002F\u002Flocalhost:8000>（或 \u003Chttp:\u002F\u002Flocalhost:8000\u002Fgalaxy>）\n\n- 如果出现搜索页面，请点击右上角的“注销”。此时将显示SWIRL登录页面。\n\n- 输入用户名“admin”和密码“password”，然后点击“登录”。\n\n- 在搜索框中输入查询并点击“搜索”按钮。几秒钟内就会显示排名靠前的结果：\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_06c0d8751eac.png\" height=\"70%\" weight=\"70%\" style=\"border-radius: 10px;\">\n\n- 若要查看原始JSON数据，请打开 \u003Chttp:\u002F\u002Flocalhost:8000\u002Fswirl\u002Fsearch\u002F>。\n\n最新的搜索对象将显示在顶部。点击“result_url”链接即可查看完整的JSON响应。\n\n## 注释 📝\n\n> **警告**\n> Swirl 的 Docker 版本在关闭时 *不会* 保留任何数据或配置！\n\n:key: Swirl 出厂时即配置为可直接搜索 Arxiv、European PMC 和 Google News。\n\n:key: 使用 Swirl 与 Microsoft 365 集成需要由公司授权管理员进行安装并批准。如需更多信息，请参阅 [M365 指南](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FM365-Guide.html) 或 [联系我们](mailto:hello@swirlaiconnect.com)。\n\n## 下一步 👇\n\n- 查看我们 [最新版本](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Freleases) 的详细信息！\n\n- 前往 [快速入门指南](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FQuick-Start.html) 并在本地安装 Swirl！\n\n## 视频教程\n\n60 秒内使用 Docker 运行 SWIRL 的指南。\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Ypn4XvSJfcQ\" target=\"_blank\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_readme_948f29146096.jpg\" height=\"200px\" width=\"400px\"\u002F>\n\n\u003C\u002Fa>\n\n\u003Cbr\u002F>\n\n# 🌟 核心功能\n\n| ✦ | 功能 |\n|:-----:|:--------|\n| 📌 | [Microsoft 365 集成与 OAUTH2 支持](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FM365-Guide.html) |\n| 🔍 | [SearchProvider 配置](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002FSearchProviders) 适用于所有内置连接器。可通过 [active、default 和 tags 属性进行组织](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FUser-Guide.html#organizing-searchproviders-with-active-default-and-tags)。 |\n| ✏️ | [针对每个提供商的查询适配](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FUser-Guide.html#search-syntax)，例如将 `NOT term` 重写为 `-term`，移除不支持 NOT 的提供商中的 NOT 项，并传递 AND、+ 和 OR 运算符。 |\n| ⏳ | [同步或异步搜索联邦](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#architecture) 通过 [API](http:\u002F\u002Flocalhost:8000\u002Fswirl\u002Fswagger-ui\u002F) 实现 |\n| 🛎️ | [可选订阅功能](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#subscribe-to-a-search) 可持续监控任意搜索以获取新结果 |\n| 🛠️ | [Processor](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#develop-new-processors) 阶段的流水线化处理，用于实时适配和转换查询、响应及结果 |\n| 🗄️ | [结果存储](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#result-objects) 在 SQLite3 或 PostgreSQL 中，便于后续处理、消费和\u002F或分析 |\n| ➡️ | 内置 [查询转换](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#using-query-transformations) 支持，包括重写和替换 |\n| 📖 | [基于词干匹配](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#cosinerelevancypostresultprocessor) 以及通过 NLTK 处理 [停用词](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#configure-stopwords-language) |\n| 🚫 | [重复结果检测](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#detect-and-remove-duplicate-results) 可按字段或根据可配置的余弦相似度阈值进行 |\n| 🔄 | 统一结果的重新排序 [使用余弦向量相似度](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#cosinerelevancypostresultprocessor)，基于 [spaCy](https:\u002F\u002Fspacy.io\u002F) 的大型语言模型和 [NLTK](https:\u002F\u002Fwww.nltk.org\u002F) |\n| 🎚️ | [结果混合器](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Reference.html#mixers-1) 可按相关性、日期或轮转（堆叠）格式对结果排序，订阅模式下还可选择仅过滤新条目 |\n| 📄 | 使用每个结果集提供的 URL 浏览全部请求结果、重新运行、重新评分并更新搜索 |\n| 📁 | [示例数据集](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002FData) 供 SQLite3 和 PostgreSQL 使用 |\n| ✒️ | [可选拼写校正](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#add-spelling-correction) 使用 [TextBlob](https:\u002F\u002Ftextblob.readthedocs.io\u002Fen\u002Fdev\u002Fquickstart.html#spelling-correction) |\n| ⌛ | [可选搜索\u002F结果过期服务](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FAdmin-Guide.html#search-expiration-service) 可限制存储空间使用 |\n| 🔌 | 易于扩展的 [连接器](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002Fswirl\u002Fconnectors) 和 [混合器](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002Fswirl\u002Fmixers) 对象 |\n\n\u003Cbr\u002F>\n\n# ☁ 使用 Swirl 云服务\n\n有关 Swirl 作为托管服务的信息，请 [联系我们](mailto:hello@swirlaiconnect.com)！\n\n\u003Cbr\u002F>\n\n# 📖 文档\n\n🔗 [SWIRL 文档](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F)\n\n\u003Cbr\u002F>\n\n# 👷‍♂️ 需要帮助吗？我们随时为您服务\n\n在 Swirl，每一位用户对我们都至关重要。无论您是初学者还是经验丰富的专家，只要您有任何反馈，我们都愿意倾听、支持并提供帮助。请随时与我们联系。\n\n- **直接支持**：如有任何问题、建议，甚至只是简单的问候，请发送邮件至 [support@swirlaiconnect.com](mailto:support@swirlaiconnect.com)。我们珍视每一条信息，并承诺会尽快回复！\n\n- **请求连接器（企业支持）** 想快速实现某个新的连接器吗？请联系我们：[support@swirlaiconnect.com](mailto:support@swirlaiconnect.com)","# SWIRL Search 快速上手指南\n\nSWIRL 是一款开源的 AI 搜索工具，旨在让团队在不将数据迁移到云端的情况下，获得类似 ChatGPT 的搜索体验。它支持通过 Docker 快速部署，无需向量数据库，即可实现对 OneDrive、Microsoft 365、SharePoint 等内部数据的实时检索增强生成（RAG）。\n\n## 环境准备\n\n在开始之前，请确保您的本地环境满足以下要求：\n\n*   **操作系统**：macOS、Linux 或 Windows。\n*   **Docker**：必须安装并运行最新版本的 [Docker Desktop](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F)。\n    *   **Windows 用户特别注意**：必须安装并配置 **WSL 2** 或 **Hyper-V** 后端（参考 Docker Desktop Windows 系统要求）。\n*   **网络环境**：能够访问 GitHub 以拉取配置文件，以及访问外部搜索源（如 Arxiv, Google News 等）。\n*   **可选依赖**：若需启用基于 OpenAI 的 RAG 功能，需要准备有效的 `OPENAI_API_KEY`。\n\n> **注意**：目前官方未提供中国专属镜像源，请确保网络通畅或使用通用的网络加速方案拉取 Docker 镜像。\n\n## 安装步骤\n\nSWIRL 可以通过一条命令在 Docker 中快速启动。\n\n### 1. 下载配置文件\n在终端（macOS\u002FLinux）或 PowerShell（Windows）中运行以下命令，下载 `docker-compose.yaml` 文件：\n\n```bash\ncurl https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocker-compose.yaml -o docker-compose.yaml\n```\n\n### 2. 配置环境变量（可选）\n如果您希望启用实时的 RAG 功能（需要 OpenAI），请设置以下环境变量。如果仅需基础搜索功能，可跳过此步。\n\n```shell\nexport MSAL_CB_PORT=8000\nexport MSAL_HOST=localhost\nexport OPENAI_API_KEY='\u003Cyour-OpenAI-API-key>'\n```\n\n### 3. 启动服务\n\n*   **macOS \u002F Linux 用户**：\n    ```bash\n    docker-compose pull && docker-compose up\n    ```\n\n*   **Windows 用户** (在 PowerShell 中)：\n    ```bash\n    docker compose up\n    ```\n\n等待几分钟，直到终端显示服务启动成功的日志。\n\n## 基本使用\n\n服务启动后，您可以立即通过浏览器访问 SWIRL 界面并进行搜索。\n\n### 1. 访问界面\n打开浏览器，访问以下地址：\n\u003Chttp:\u002F\u002Flocalhost:8000> 或 \u003Chttp:\u002F\u002Flocalhost:8000\u002Fgalaxy>\n\n### 2. 登录系统\n页面加载后，点击右上角的 `Log Out` 按钮进入登录页，使用默认凭据登录：\n*   **用户名**: `admin`\n*   **密码**: `password`\n\n### 3. 执行搜索\n1.  在搜索框中输入查询关键词（例如：\"artificial intelligence\"）。\n2.  点击 `Search` 按钮。\n3.  系统将在几秒钟内返回经过排序的结果，结果来源于预配置的连接器（默认包含 Arxiv, European PMC, Google News）。\n\n### 4. 查看原始数据（开发者模式）\n如需查看搜索结果的原始 JSON 数据以便调试或集成，可访问：\n\u003Chttp:\u002F\u002Flocalhost:8000\u002Fswirl\u002Fsearch\u002F>\n\n点击列表顶部的最新搜索对象中的 `result_url` 链接，即可查看完整的 JSON 响应。\n\n---\n**提示**：Docker 版本默认不持久化数据和配置，容器停止后数据会丢失。如需生产环境使用或连接 Microsoft 365 等企业数据源，请参考官方文档进行本地安装或联系企业支持。","某大型金融科技公司的合规团队需要在数分钟内从分散在 SharePoint、Confluence 和 Jira 中的数万份文档里，查找特定监管政策的最新修订记录以应对突发审计。\n\n### 没有 swirl-search 时\n- **数据搬运风险高**：为了构建搜索索引，必须将敏感的客户数据和内部政策导出到第三方向量数据库，严重违反公司“数据不出域”的安全红线。\n- **部署周期漫长**：搭建 ETL 流水线、清洗数据格式并配置复杂的向量检索引擎，通常需要运维团队耗费数周时间才能上线。\n- **信息检索低效**：员工只能分别在三个系统中手动关键词搜索，难以关联跨平台的上下文，平均每次排查需耗时 2 小时以上。\n- **权限管理混乱**：自建搜索系统难以完美同步原有系统的细粒度权限，容易导致低职级员工误窥高层机密文档。\n\n### 使用 swirl-search 后\n- **原地安全检索**：swirl-search 直接连接现有应用接口，数据无需移动或复制，完全在本地基础设施运行，天然满足企业级安全合规要求。\n- **分钟级快速落地**：仅需一条 Docker 命令即可完成部署并连接微软 365 等主流应用，从启动到获得答案仅需 60 秒。\n- **智能聚合回答**：输入自然语言问题，swirl-search 自动跨平台检索并生成带来源引用的精准摘要，将单次排查时间缩短至 10 分钟以内。\n- **权限无缝继承**：搜索结果严格遵循各源系统原有的访问控制列表，确保用户只能看到其权限范围内的内容，零额外配置成本。\n\nswirl-search 让企业在不牺牲数据安全的前提下，以极低的部署成本实现了跨百款应用的即时智能问答，每周为团队节省约 7.5 小时的宝贵生产力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fswirlai_swirl-search_1387181a.png","swirlai","SWIRL","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fswirlai_33bf25fd.png","AI Infrastructure Software for Search and Retrieval Augmented Generation (RAG)",null,"hello@swirl.today","swirl_search","https:\u002F\u002Fswirlaiconnect.com\u002F","https:\u002F\u002Fgithub.com\u002Fswirlai",[83,87,91,95,99],{"name":84,"color":85,"percentage":86},"Python","#3572A5",97.1,{"name":88,"color":89,"percentage":90},"Shell","#89e051",1.6,{"name":92,"color":93,"percentage":94},"HTML","#e34c26",0.7,{"name":96,"color":97,"percentage":98},"CSS","#663399",0.3,{"name":100,"color":101,"percentage":98},"Dockerfile","#384d54",2988,282,"2026-04-02T06:56:01","Apache-2.0","Linux, macOS, Windows","未说明",{"notes":109,"python":107,"dependencies":110},"1. 必须安装并运行 Docker Desktop。2. Windows 用户需额外配置 WSL 2 或 Hyper-V 后端。3. 默认通过 docker-compose 部署，无需手动配置 Python 环境。4. 容器重启后数据不保留（除非配置外部存储）。5. 若需使用 Microsoft 365 连接，需管理员授权。6. 可选配置 OpenAI API Key 以启用实时 RAG 功能。",[111,112,113,114,115,116,117,118],"Docker","Docker Compose","SQLite3","PostgreSQL","NLTK","spaCy","TextBlob","OpenAI API (可选)",[13,14,35,120],"其他",[122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"search","search-engine","federated-query","federated-search","ai-search","bigquery","large-language-models","relevancy","metasearch","django","gpt","python","rag","unified-search","retrieval-augmented-generation","2026-03-27T02:49:30.150509","2026-04-06T16:15:45.071727",[],[141,146,151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236],{"id":142,"version":143,"summary_zh":144,"released_at":145},117589,"v4.4.0.0","SWIRL 团队很高兴地宣布推出 **SWIRL AI Search 4.4 社区版**。\n\n⭐ 请为我们的仓库点个星：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)  \n🌐 请访问我们的官网：[https:\u002F\u002Fwww.swirlaiconnect.com\u002F](https:\u002F\u002Fwww.swirlaiconnect.com\u002F)\n\n---\n\n## 新特性\n\n🔹 **源选择器现支持按照 CUA 协议进行部分选择**\n\n![部分源选择](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fblob\u002Fmain\u002Fdocs\u002Fimages\u002F4_4_0-Comm-Source%20Selector-1.png)\n\n🔹 **SearchProvider 标签现在可在源选择器中点击**\n\n![已选中的 SearchProvider 标签](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fblob\u002Fmain\u002Fdocs\u002Fimages\u002F4_4_0-Comm-Source%20Selector-2.png)\n\n## 改进\n\n🔹 **社区版 RAG 现在支持所有 OpenAI 和 Azure\u002FOpenAI 模型**\n\n`.env` 文件中现已支持以下 RAG 配置选项：\n\n```plaintext\n# 模型使用\nSWIRL_RAG_MODEL='gpt-4.1'\nSWIRL_REWRITE_MODEL='gpt-4.1'\nSWIRL_QUERY_MODEL='gpt-4.1'\n\n# RAG 的 token 和结果预算\nSWIRL_RAG_TOK_MAX=15000\nSWIRL_RAG_MAX_TO_CONSIDER=15\n```\n\n🔹 SWIRL Docker 镜像已更新至最新的 Debian Trixie 基础镜像。\n\n🔹 已在 Python 3.13.9 上对 SWIRL 进行了验证。\n\n## 修复\n\n🔹 **安全漏洞**\n- 修复了 1 个严重级别的 CVE\n- 修复了 9 个高危级别的 CVE\n\n🔹 **Galaxy UI**  \n- “管理 SWIRL”链接现仅对超级用户可见\n- 页面标题已被缩短\n\n## 升级说明\n\n⚠️ 版本 4.4 不需要数据库迁移。\n\n---\n\n## 文档\n\n📘 SWIRL 的 [文档网站](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F) 已更新，反映了上述新特性。","2025-12-09T22:36:56",{"id":147,"version":148,"summary_zh":149,"released_at":150},117590,"v4.3.0.0","SWIRL 团队宣布推出 **SWIRL AI 搜索 4.3 社区版**。\n\n⭐ 请为我们的仓库点个星：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)  \n🌐 请访问我们的官网：[https:\u002F\u002Fwww.swirlaiconnect.com\u002F](https:\u002F\u002Fwww.swirlaiconnect.com\u002F)\n\n---\n\n## 新功能与改进\n\n🔹 **社区版支持 OpenAI 和 Azure\u002FOpenAI 配置**\n\n社区用户现在可以选择任意 OpenAI 或 Azure\u002FOpenAI 模型，包括最新发布的 GPT-5。\n\n```\nINFO 2025-08-20 15:51:53 rag_prompt RagPrompt : max_tokens:3800 num_tokens 3754 is_full:False\nINFO 2025-08-20 15:51:53 openai get model AZUREAI gpt-5\n```\n\n![使用 GPT-5 的 RAG](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_3_0-Community-GPT5.png)\n\n🔹 **Galaxy UI**  \n- **新增：** 搜索结果卡片现可显示“作者”字段  \n- **改进：** 登录用户名现显示在“用户个人资料”菜单中  \n- **改进：** 社区版帮助\u002F信息菜单中新增“支持工单”链接  \n- **改进：** 更新了帮助\u002F信息菜单中的“支持资源”链接  \n- **改进：** 将 Yarn 编译器升级至 v4.9.2，并更新了依赖项\n\n## 修复内容\n\n![项目选择](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_3_0-Item-selection.png)\n\n🔹 **Galaxy UI**  \n- 解决了多个关于“结果项目选择”UI\u002FUX 的问题  \n- **日期排序修复：** 即使没有“发布日期”值，仍会保留“查看方式”菜单  \n- 修复了 `&rag_timeout=` URL 参数的问题  \n\n## 升级说明\n\n⚠️ 版本 4.3 不需要进行数据库迁移。\n\n---\n\n## 文档\n\n📘 SWIRL 的 [文档网站](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F) 已更新，反映了上述新功能。","2025-08-21T15:00:50",{"id":152,"version":153,"summary_zh":154,"released_at":155},117591,"v4.2.0.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队宣布发布SWIRL AI Search 4.2社区版。\n\n### 请为我们的仓库点个赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n### 请访问我们的官网：[https:\u002F\u002Fwww.swirlaiconnect.com\u002F](https:\u002F\u002Fwww.swirlaiconnect.com\u002F)\n\n\u003Cbr\u002F>\n\n# 改进\n\n:small_blue_diamond: Galaxy UI新增了一个信息菜单，其中包含指向SWIRL支持资源和当前产品版本号的链接。\n\n![信息菜单](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_2_0-Info-menu.png)\n\n:small_blue_diamond: **OIDC配置已更改！**\n\n用于配置OIDC的`static\u002Fapi\u002Fconfig\u002Fdefault`部分已被重命名并重新格式化如下：\n```json\n\"oidcConfig\": {\n    \"Microsoft\": {\n      \"active\": false,\n      \"issuer\": \"https:\u002F\u002Flogin.microsoftonline.com\u002F\u003Ctenant-id>\u002Fv2.0\",\n      \"clientId\": \"\u003Cmicrosoft-client-id>\",\n      \"redirectUri\": \"http:\u002F\u002Flocalhost:8000\u002Fgalaxy\u002Foidc-callback\",\n      \"scope\": \"openid email\",\n      \"responseType\": \"code\",\n      \"requireHttps\": false,\n      \"strictDiscoveryDocumentValidation\": false,\n      \"skipIssuerCheck\": true\n    },\n    \"Google\": {\n      \"active\": false,\n      \"clientId\": \"\u003Cgoogle-client-id>.apps.googleusercontent.com\",\n      \"redirectUri\": \"http:\u002F\u002F\u003Cswirl-host>:\u003Cswirl-port>\u002Fgalaxy\u002Foidc-callback\",\n      \"scope\": \"openid email profile\"\n    }\n  }\n```\n\n**如果您正在使用Microsoft OIDC（即“使用Microsoft登录”），请更新您现有的配置块！**\n\n有关配置说明，请参阅更新后的[M365指南](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FM365-Guide.html)。\n\n:small_blue_diamond: SWIRL AI现已在Python 3.12.10上通过验证。\n\n# 变更\n\n:small_blue_diamond: 请注意，SWIRL不再公开我们的Google API密钥！！\n\n社区用户需要自行获取Google API密钥，才能在Google Web、LinkedIn或SWIRL文档网站上使用SWIRL。（这些来源是通过Google可编程搜索引擎访问的，而该服务并非免费。）Arxiv、European PMC和Google News将继续返回搜索结果。用户可以使用每页顶部的搜索框在[SWIRL文档网站](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F)上进行搜索。\n\n要获取您自己的Google API密钥，请按照以下说明操作：[https:\u002F\u002Fcloud.google.com\u002Fdocs\u002Fauthentication\u002Fapi-keys](https:\u002F\u002Fcloud.google.com\u002Fdocs\u002Fauthentication\u002Fapi-keys)\n\n# 已知问题\n\n:small_blue_diamond: 点击Microsoft Teams搜索结果时，Teams应用有时会显示以下错误：\n```\n我们无法将您带到该消息，因为它位于您未加入的聊天中。\n```\n为了使Teams链接正确打开，您必须在点击结果链接之前，先打开并登录Microsoft Teams应用。\n\n:small_blue_diamond: [从带有q=的浏览器创建搜索](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Gu","2025-06-09T21:28:08",{"id":157,"version":158,"summary_zh":159,"released_at":160},117592,"v4.1.0.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队很高兴地宣布，SWIRL AI Search 4.1社区版正式发布！！\n\n### 请为我们的仓库点个星：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n### 请访问我们的官网：[https:\u002F\u002Fwww.swirlaiconnect.com\u002F](https:\u002F\u002Fwww.swirlaiconnect.com\u002F)\n\n\u003Cbr\u002F>\n\n# 新特性\n\n:small_blue_diamond: 结果页面上的“取消全选”选项在点击后会更新为“全选”链接，方便您快速恢复初始选择：\n\n![取消全选](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_1_0-DeselectAll.png)\n\n![全选](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_1_0-SelectAll.png)\n\n:small_blue_diamond: 为Galaxy UI源代码实现了完整的单元测试套件，并从代码库中移除了未使用的组件和服务。\n\n![Galaxy单元测试](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_1_0-GalaxyUnitTests.png)\n\n# 改进\n\n:small_blue_diamond: 对新的Galaxy UI界面进行了多项修复和优化，包括在用户个人资料菜单中添加了SWIRL版本信息。\n\n![SWIRL版本](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_1_0-Version.png)\n\n:small_blue_diamond: SWIRL AI现已通过Python 3.12.9的验证。\n\n# 变更\n\n:small_blue_diamond: **请注意，SWIRL不再公开我们的Google API密钥！！**\n\n社区用户需要自行获取Google API密钥，才能在Google Web、LinkedIn或SWIRL文档站点上使用SWIRL。（这些数据源是通过Google可编程搜索引擎访问的，而该服务并非免费。）arXiv、European PMC和Google News将继续返回搜索结果。用户可以通过每页顶部的搜索框，在[SWIRL文档站点](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F)上进行搜索。\n\n要获取您自己的Google API密钥，请按照以下说明操作：[https:\u002F\u002Fcloud.google.com\u002Fdocs\u002Fauthentication\u002Fapi-keys](https:\u002F\u002Fcloud.google.com\u002Fdocs\u002Fauthentication\u002Fapi-keys)\n\n:small_blue_diamond: [arXiv.org SearchProvider配置](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fblob\u002Fmain\u002FSearchProviders\u002Farxiv.json)现在默认会对用户的搜索词进行引用，这将使该数据源返回更少但更精确的结果。\n\n# 已知问题\n\n:small_blue_diamond: 点击Microsoft Teams搜索结果时，有时会弹出Teams应用中的以下错误提示：\n```\n我们无法带您前往该消息，因为它位于您未加入的聊天中。\n```\n要正确打开Teams链接，您必须在点击结果链接之前，先打开并登录Microsoft Teams应用。\n\n:small_blue_diamond: [通过带有q=参数的浏览器创建搜索](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter) ca","2025-03-20T17:21:02",{"id":162,"version":163,"summary_zh":164,"released_at":165},117593,"v4.0.0.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队很高兴地宣布SWIRL AI 4.0社区版正式上线！\n\n此次发布包含更新后的Galaxy用户界面！\n![Galaxy 4.0 结果](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_0_0-Results.png)\n\n感谢所有为SWIRL社区提供反馈的成员！非常感谢！\n\n### 请为我们的仓库点赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n### 请访问我们的官网：[https:\u002F\u002Fwww.swirlaiconnect.com\u002F](https:\u002F\u002Fwww.swirlaiconnect.com\u002F)\n\n\u003Cbr\u002F>\n\n# 新特性\n\n## 更新后的Galaxy用户界面\n\nGalaxy现已升级至各组件的最新版本，并重新布局以提升视觉清晰度！\n\n![Galaxy 4.0 搜索](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_0_0-Search-2.png)\n![Galaxy 4.0 登录](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_0_0-Results-Show-Details.png)\n![Galaxy 4.0 登录](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_0_0-Results-Select-All.png)\n![Galaxy 4.0 登录](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_0_0-RAG.png)\n\n# 改进\n\n:small_blue_diamond: Galaxy UI现在支持多图表展示！\n\n![Galaxy 4.0 登录](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F4_0_0_charting.png)\n\n有关此功能的更多信息，请参阅：[可视化结构化数据](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FDeveloper-Guide.html#visualize-structured-data-results)\n\n:small_blue_diamond: SWIRL现在不仅会报告由SWIRL检索到的结果数量，还会显示从所有来源中找到的总结果数。\n\n:small_blue_diamond: Galaxy现提供“显示\u002F隐藏全部详情”切换按钮。\n\n:small_blue_diamond: SWIRL已在Python 3.12.8上完成验证。\n\n# 变更\n\n:small_blue_diamond: LinkedIn SearchProvider现默认处于停用状态。如果您希望在SWIRL中使用LinkedIn，请[联系SWIRL](mailto:hello@swirl.today)！！\n\n# 已知问题\n\n:small_blue_diamond: 点击Microsoft Teams结果时，Teams应用有时会显示以下错误：\n```\n我们无法将您带到该消息，因为它位于您未加入的聊天中。\n```\n要使Teams链接正常打开，您必须在点击结果链接之前先打开Microsoft Teams应用并完成身份验证。\n\n:small_blue_diamond: [通过带有q=参数的浏览器创建搜索](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter)有时可能会生成两个Search对象。\n\n这是由于浏览器的预取功能，也称为预测性服务所致。如果您或您的用户对此感到困扰，请关闭Chrome的预测服务（[参考链接](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F)）或Safari的预取功能（[参考链接](https:\u002F\u002Fstackoverfl","2025-02-11T18:25:26",{"id":167,"version":168,"summary_zh":169,"released_at":170},117594,"v3.9.0.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队很高兴地宣布，SWIRL AI Connect 3.9社区版正式可用！\n\n此次发布支持Django数据库迁移，在RAG的“选择项目”功能中新增了“取消全选”按钮，并完成了对Python 3.12.6版本的兼容性验证。衷心感谢SWIRL社区的所有成员为本次版本提供的宝贵反馈。\n\n### 请为我们的仓库点赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n\u003Cbr\u002F>\n\n# 新特性\n\n:small_blue_diamond: 在RAG的“选择项目”功能中新增了“取消全选”按钮\n\n![取消全选 - 1](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_9_0-Unselect_All-1.png)\n![取消全选 - 2](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_9_0-Unselect_All-2.png)\n\n:small_blue_diamond: SWIRL数据库模式变更现在将作为Django迁移的一部分进行处理。每次模式变更都会生成对应的迁移文件，这些文件将纳入版本控制，并随每次发布一起提供。\n\n:small_blue_diamond: SWIRL AI Connect现已通过Python 3.12.6的验证。\n\n# 改进\n\n:small_blue_diamond: Galaxy UI现在能够更优雅地处理较长的结果标题以及浏览器窗口大小的变化。\n\n:small_blue_diamond: 新增了一个“Dev”标签，用于在以开发为中心的SearchProvider中进行搜索。\n\n:small_blue_diamond: Elastic SearchProvider现在能够正确返回配置的结果数量。\n\n:small_blue_diamond: 默认的OneDrive SearchProvider配置中移除了`FILE_SYSTEM`指令；同时，对默认的Outlook Email `result_processors`进行了重新排序，以更好地处理线程式对话。\n\n# 已知问题\n\n:small_blue_diamond: 点击Microsoft Teams结果时，有时会从Teams应用中出现以下错误：\n```\n我们无法带您前往该消息，因为它位于您未加入的聊天中。\n```\n要使Teams链接正常打开，您必须在点击结果链接之前先打开Microsoft Teams应用。\n\n:small_blue_diamond: 使用`q=`参数从浏览器创建搜索时，有时可能会生成两个Search对象。\n\n这是由于浏览器的预取功能，也称为预测服务所致。请关闭Chrome的预测服务：[关闭Chrome预测服务](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F)。对于Safari，请参考：[如何关闭Safari的预取功能](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature)。\n\n如遇任何问题，请向[支持团队](#support)报告。\n\n# 升级\n\n:warning: 版本3.9需要执行数据库迁移。请参阅[升级SWIRL](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FAdmin-Guide.html#upgrading-swirl)。\n\n# 文档\n\n请访问我们更新并扩充后的文档网站：[https:\u002F\u002Fdocs.swir","2024-11-12T19:57:25",{"id":172,"version":173,"summary_zh":174,"released_at":175},117595,"v3.8.0.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队很高兴地宣布，SWIRL AI Connect 3.8社区版正式可用！\n\n本次发布包括基于MS Presidio的PII检测与移除功能、RAG结果引用格式的优化，以及对Python 3.12.5版本的支持验证。在此特别感谢SWIRL社区的所有成员，你们提供的宝贵反馈已在本版本中得到采纳。\n\n### 请为我们的仓库点赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n\u003Cbr\u002F>\n\n# 新特性\n\n:small_blue_diamond: 使用[MS Presidio](https:\u002F\u002Fmicrosoft.github.io\u002Fpresidio\u002F)进行PII检测与移除\n\n![PII检测和移除](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_8_0-PII_Detection.png)\n\n:small_blue_diamond: 更新了SWIRL RAG结果的引用格式\n\n![RAG引用](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_8_0-RAG_Citations.png)\n\n:small_blue_diamond: SWIRL AI Connect现已支持Python 3.12.5版本。\n\n# 改进\n\n:small_blue_diamond: 修复了Django API端点中PATCH请求的相关问题。\n\n# 已知问题\n\n:small_blue_diamond: 点击Microsoft Teams搜索结果时，有时会弹出Teams应用的以下错误提示：\n```\n我们无法将您转到该消息，因为它位于您未加入的聊天中。\n```\n要使Teams链接正常打开，您必须在点击结果链接之前先打开Microsoft Teams应用。\n\n:small_blue_diamond: 使用`q=`参数从浏览器创建搜索时，有时可能会生成两个Search对象。\n\n这是由于浏览器的预取机制（即预测性服务）所致。您可以尝试关闭Chrome的预测服务：[关闭Chrome预测服务](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F)；或关闭Safari的预取功能：[关闭Safari预取功能](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature)。\n\n如遇任何问题，请及时向[支持团队](#support)反馈。\n\n# 升级说明\n\n:warning: 版本3.8需要执行数据库迁移。请参阅[SWIRL升级指南](https:\u002F\u002Fdocs.swirlaiconnect.com\u002FAdmin-Guide.html#upgrading-swirl)。\n\n# 文档\n\n欢迎访问我们最新更新并扩充的文档网站：[https:\u002F\u002Fdocs.swirlaiconnect.com\u002F](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F)\n\n# 支持\n\n:small_blue_diamond: [加入SWIRL Slack社区！](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-2sfwvhwwg-mMn9tcKhAbqXbrV~9~Y1eA)\n\n:small_blue_diamond: 如有任何问题、需求或疑问，请发送邮件至[support@swirl.today](mailto:support@swirl.today)——我们非常期待您的来信！","2024-09-25T14:55:00",{"id":177,"version":178,"summary_zh":179,"released_at":180},117596,"v3.6.0.1","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL AI Connect 3.6.0.1 社区版现已发布！\n\n本次版本更新对 LinkedIn 搜索功能进行了优化，并修复了 GenAI 连接器的相关问题，同时全面迁移到全新的 [swirlaiconnect.com](https:\u002F\u002Fswirlaiconnect.com\u002F) 域名。\n\n### 请为我们的仓库点赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n\u003Cbr\u002F>\n\n# 更新内容\n\n:small_blue_diamond: 默认的 LinkedIn SearchProvider 在人员姓名和职位名称的匹配上得到了提升。\n\n:small_blue_diamond: 修复了 GenAI 连接器中的一个问题。\n\n:small_blue_diamond: 代码库中所有指向 SWIRL 相关域名的引用已更新至新的 [swirlaiconnect.com](https:\u002F\u002Fswirlaiconnect.com\u002F) 域名。\n\n# 已知问题\n\n:small_blue_diamond: 点击 Microsoft Teams 搜索结果时，Teams 应用有时会显示以下错误信息：\n```\n我们无法将您转到该消息，因为它位于您未加入的聊天中。\n```\n要使 Teams 链接正常打开，您必须在点击结果链接之前先打开 Microsoft Teams 应用程序。\n\n:small_blue_diamond: 使用 `q=` 参数从浏览器创建搜索（详见 [https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter)）时，有时可能会生成两个 Search 对象。\n\n这是由于浏览器的预取功能，也称为预测性服务所致。您可以尝试关闭 Chrome 的预测服务（[参阅此处](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F)）或 Safari 的预取功能（[参阅此处](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature)）。\n\n如遇任何问题，请通过 [support](#support) 向我们反馈。\n\n# 升级说明\n\n:warning: 版本 3.6.0.1 不需要进行数据库迁移。\n\n# 文档\n\n请访问我们最新且内容更丰富的文档网站：[https:\u002F\u002Fdocs.swirlaiconnect.com\u002F](https:\u002F\u002Fdocs.swirlaiconnect.com\u002F)\n\n# 支持\n\n:small_blue_diamond: [加入 SWIRL Slack 社区！](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw)\n\n:small_blue_diamond: 如有任何问题、请求或疑问，请发送邮件至 [support@swirlaiconnect.com](mailto:support@swirlaiconnect.com) — 我们非常期待您的来信！","2024-08-20T20:27:32",{"id":182,"version":183,"summary_zh":184,"released_at":185},117597,"v3.6.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队很高兴地宣布SWIRL AI Connect 3.6.0社区版正式可用！\n\n本次发布包含用于生产环境的QDrantDB连接器和SearchProvider，以及仅基于搜索结果内容进行RAG处理的支持。  \n感谢[Anush008](https:\u002F\u002Fgithub.com\u002FAnush008)及SWIRL社区中的其他成员为此次版本提供的宝贵反馈。\n\n### 请为我们的仓库点赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n\u003Cbr\u002F>\n\n# 新特性\n\n:small_blue_diamond: 正式支持对QDrantDB数据源的搜索，包括全新的连接器和SearchProvider：\n\n![QDrant DB 结果](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_6_0-QDrantDB-1.png)\n\n:small_blue_diamond: 当无法获取页面内容时，SWIRL的RAG处理将回退至仅使用搜索结果的内容。\n\n:small_blue_diamond: SWIRL AI Connect现已通过Python 3.12.4的验证。\n\n# 已知问题\n\n:small_blue_diamond: 点击Microsoft Teams搜索结果时，有时会从Teams应用中出现以下错误：\n```\n我们无法将您转到该消息，因为它位于您未加入的聊天中。\n```\n要使Teams链接正确打开，您必须在点击结果链接之前先打开Microsoft Teams应用。\n\n:small_blue_diamond: 使用`q=`参数从浏览器创建搜索（详见[文档](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter)）时，有时可能会生成两个Search对象。\n\n这是由于浏览器的预取功能，也称为预测性服务所致。请关闭Chrome的预测服务（[参考](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F)），或关闭Safari的预取功能（[参考](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature)）。  \n\n如遇到任何问题，请向[支持团队](#support)报告。\n\n# 升级说明\n\n:warning: 版本3.6.0需要进行数据库迁移。请参阅[升级SWIRL指南](https:\u002F\u002Fdocs.swirl.today\u002FAdmin-Guide.html#upgrading-swirl)。\n\n# 文档\n\n[概览](https:\u002F\u002Fdocs.swirl.today\u002F) | [快速入门指南](https:\u002F\u002Fdocs.swirl.today\u002FQuick-Start) | [用户指南](https:\u002F\u002Fdocs.swirl.today\u002FUser-Guide) | [管理员指南](https:\u002F\u002Fdocs.swirl.today\u002FAdmin-Guide) | [M365指南](https:\u002F\u002Fdocs.swirl.today\u002FM365-Guide) | [开发者指南](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide) | [教程：扩展Swirl](https:\u002F\u002Fdocs.swirl.today\u002FTutorials) | [开发者参考](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Reference) | [AI指南](https:\u002F\u002Fdocs.swirl.today\u002FAI-Guide) | [企业指南](https:\u002F\u002Fdocs.swirl.today\u002FEnterprise-Guide)\n\n# 支持\n\n:small_blue_diamond: [加入SWIRL社区Slack！](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw)\n\n:small_blue_diamond: 如有任何问题或需求，请发送邮件至[support@swirl.today](mailto:support@swirl.today)。","2024-07-16T14:54:57",{"id":187,"version":188,"summary_zh":189,"released_at":190},117598,"v3.5.0","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Fdark_header.png)\n\n## SWIRL团队很高兴地宣布SWIRL AI Connect 3.5社区版正式可用！\n\n此次发布包括一个用于生产的Pinecone连接器、对在VS Code调试器中运行SWIRL的支持，以及Galaxy界面中的GDPR合规和数据集可视化功能。感谢[simsong](https:\u002F\u002Fgithub.com\u002Fsimsong)、[deg](https:\u002F\u002Fgithub.com\u002Fdeg)以及SWIRL社区中的其他成员，他们提供的反馈已在本次版本中得到解决。\n\n### 请为我们的仓库点赞：[https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\n\n\u003Cbr\u002F>\n\n# 新特性\n\n:small_blue_diamond: Galaxy界面现在会为那些在`result_mappings`字段中指定了[`DATASET`选项](https:\u002F\u002Fdocs.swirl.today\u002FUser-Guide.html#result-mapping-options)的SearchProvider结果渲染图表可视化。\n\n![Galaxy图表](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_5_0-Chart_UI.png)\n\n:small_blue_diamond: 在Galaxy界面中新增了GDPR Cookie同意提示。\n\n![Cookie同意](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_5_0-GDPR-1.png)\n\n:small_blue_diamond: 可以使用新的PineconeDB连接器和SearchProvider来搜索向量数据库源。\n\n![PineconeDB结果](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_5_0-PineconeDB-1.png)\n\n:small_blue_diamond: 开发者现在可以在VSCode调试器中运行[SWIRL](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002FDevUtils\u002Fvscode\u002Fdebug)。\n\n![交互式断点](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_5_0-VSCode-Debugger.png)\n\n# 改进\n\n:small_blue_diamond: SWIRL自带的默认SearchProvider配置已更新；多个Google PSE已被整合为一个新的简洁提供程序定义，并且许多免费可用的数据源现在已默认启用。\n\n:small_blue_diamond: Elastic和OpenSearch连接器已被重构。\n\n:small_blue_diamond: SWIRL的公共API文档已更新，现由`drf-spectacular`包生成，并支持OpenAPI v.3规范。\n\n![SWIRL OpenAPI](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_5_0-OpenAPI.png)\n\n:small_blue_diamond: 脚本及其他辅助工具已被移至仓库中的新目录[`DevUtils\u002F`](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Ftree\u002Fmain\u002FDevUtils)。\n\n:small_blue_diamond: 日志记录已被重构；可通过SWIRL的`.env`文件中的新条目`SWIRL_LOG_DEBUG`选择性地启用详细日志信息。例如：\n```shell\nSWIRL_LOG_DEBUG='swirl.page_fetch.web_page, swirl.processors.rag'\n```\n\n:small_blue_diamond: 现在可以通过SWIRL的`.env`文件中的新条目`CSRF_TRUSTED_ORIGINS`启用CSRF防护。例如：\n```shell\nCSRF_TRUSTED_ORIGINS='http:\u002F\u002Flocalhost:8000'\n```","2024-05-28T21:14:02",{"id":192,"version":193,"summary_zh":194,"released_at":195},117599,"v3.2.0","![Swirl Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Ftransparent_header_3.png)\r\n\r\n## Team Swirl is excited to announce General Availability of Swirl 3.2!\r\nThis release includes the first version of the `AutomaticPayloadMapperResultProcessor`, `RequireQueryStringInTitleResultProcessor`, `DropIrrelevantPostResultProcessor` and `NoModQueryProcessor`, along with new SearchProviders for [OpenSanctions.org](https:\u002F\u002Fwww.opensanctions.org\u002F) and [LittleSis.org](https:\u002F\u002Flittlesis.org\u002F). We've also added support for running OpenAI in Azure, storing query templates in JSON, plus updated Python, Django, and OpenAI API versions, and resolved issues found in previous releases. Finally, the Galaxy UI has been updated to :star: results above a particular relevancy score.\r\n\r\nWe're seeking anyone interested in testing new Connectors to Collibra, Thoughtspot and Pinecone DB. Please [contact Swirl via email](mailto:hello@swirl.today) or [Slack](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw) for access.\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# New Features\r\n\r\n:small_blue_diamond: New `AutomaticPayloadMapperResultProcessor` which profiles response data to find good strings for Swirl's `title`, `body`, and `date_published` fields. It is intended for SearchProviders that would otherwise have few (or no) good `result_mappings` options.  It should be place after the `MappingResultProcessor`, and the `result_mappings` field should be blank.\r\n```\r\n \"result_processors\": [\r\n    \"MappingResultProcessor\",\r\n    \"AutomaticPayloadMapperResultProcessor\",\r\n    \"CosineRelevancyResultProcessor\"\r\n],\r\n...\r\n\"result_mappings\": \"\",\r\n```\r\n![Big Query results](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_2_0-BigQuery.png)\r\n\r\n:small_blue_diamond: New `NoModQueryProcessor` that only removes leading SearchProvider Tags and does not modify the query terms in any way. It is intended for repositories that allow non-search characters (such as brackets).\r\n```\r\n\"query_processors\": [\r\n    \"NoModQueryProcessor\"\r\n],\r\n```\r\n\r\n:small_blue_diamond: New `RequireQueryStringInTitleResultProcessor` that drops results that do not contain the `query_string_to_provider` in the result `title` field.  It should be added after the `MappingResultProcessor` and is now included by default in the \"LinkedIn - Google PSE\" SearchProvider.\r\n```\r\n\"result_processors\": [\r\n    \"MappingResultProcessor\",\r\n    \"RequireQueryStringInTitleResultProcessor\",\r\n    \"DateFinderResultProcessor\",\r\n    \"CosineRelevancyResultProcessor\"\r\n],\r\n```\r\n\r\n:small_blue_diamond: New `DropIrrelevantPostResultProcessor`  drops results with `swirl_score \u003C settings.MIN_SWIRL_SCORE` (set to `500` by default) and results with no `swirl_score`.\r\n:warning: The Galaxy UI will not display the correct number of results if this ResultProcessor is deployed.  This will be addressed in a future release.\r\n\r\n:small_blue_diamond:  Swirl now supports using Azure OpenAI models for RAG processing in addition to OpenAI's ChatGPT models.\r\n```\r\n2024-01-29 16:36:07,335 INFO     get model AZUREAI gpt-35-turbo\r\n2024-01-29 16:36:10,542 INFO     HTTP Request: POST https:\u002F\u002Fswirltest-openai.openai.azure.com\u002Fopenai\u002Fdeployments\u002Fgpt-35-turbo\u002Fchat\u002Fcompletions?api-version=2023-10-01-preview \"HTTP\u002F1.1 200 OK\"\r\n```\r\n\r\n:small_blue_diamond: The Galaxy UI now highlghts results with a `swirl_score` above a configurable threshold with a star in the results list.  The `swirl_score` configuration is available in `theminimumSwirlScore` entry of `static\u002Fapi\u002Fconfig\u002Fdefault`, and the default is `100`.\r\n![Galaxy UI Stars](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_2_0-Galaxy-star.png)\r\n\r\n:small_blue_diamond: New `SearchProvider.query_template_json` field which stores the `query_template` as JSON.  The MongoDB SearchProvider has been updated to use this feature.\r\n```\r\n\"query_template_json\": {\r\n    \"$text\": {\r\n        \"$search\": \"{query_string}\"\r\n    }\r\n},\r\n```\r\n\r\n:small_blue_diamond: Support for lowercasing of URLs is now available via a new `LC_URL` option in SearchProvider `result_mappings`.\r\n```\r\n\"result_mappings\": \"title=resource.name,body=resource.description, ... LC_URL,NO_PAYLOAD\",\r\n```\r\n\r\n:small_blue_diamond: Added support for list-of-list responses from source APIs, where the first list element is the column names.\r\n\r\n## New SearchProviders\r\n\r\n:small_blue_diamond:  Search the LittleSis free database of \"who-knows-who at the heights of business and government\" with the new LittleSis.org SearchProvider.\r\n![LittleSis.org](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_2_0-LittleSis.png)\r\n\r\n:small_blue_diamond:  Find sanctions targets and persons of interest with the new OpenSanctions.org SearchProvider.\r\n![OpenSanctions.org](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_2_0-OpenSanctions","2024-02-22T14:28:20",{"id":197,"version":198,"summary_zh":199,"released_at":200},117600,"v3.1.0","![Swirl Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Ftransparent_header_3.png)\r\n\r\n## Team Swirl is announcing General Availability of Swirl 3.1.0!\r\nSwirl 3.1.0 includes new Connectors to MongoDB Atlas, Snowflake and Oracle, updates to Python and OpenAI API versions, and resolves numerous issues with previous versions.\r\n\r\n### Community Contributions\r\n:trophy: This version of Swirl includes additional contributions from the open source community.  Many thanks to GitHub users Harsh Mahajan ([HarshMN2345](https:\u002F\u002Fgithub.com\u002FHarshMN2345)) and Harshil Khamar ([Harshil0512](https:\u002F\u002Fgithub.com\u002FHarshil0512)) for their accepted, merged PRs; and also to Janvi Thakkar ([Janvi-Thakkar](https:\u002F\u002Fgithub.com\u002FJanvi-Thakkar)) for inspiring us to add the Internet Archive as a source for Swirl!\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# New Features\r\n\r\n:small_blue_diamond: New MongoDB Atlas Connector &amp; SearchProvider for the `sample_mflix` collection, `movies` sample table\r\n\r\n![MongoDB Search Result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_1_0_mongodb.png)\r\n\r\n:small_blue_diamond: New Snowflake Connector &amp; SearchProvider for the `FreeCompanyResearch` dataset\r\n\r\n![Snowflake Search Result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_1_0_snowflake.png)\r\n\r\n:small_blue_diamond: New Oracle Connector, tested against 23c Free (and presumably supporting earlier versions)\r\n\r\n## New SearchProviders\r\n\r\n:small_blue_diamond:  Search your Cards in Atlassian Trello\r\n\r\n![Trello Search Result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_1_0-Trello.png)\r\n\r\n:small_blue_diamond:  Find Tasks in Asana\r\n\r\n![Asana Search Result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_1_0-Asana.png)\r\n\r\n:small_blue_diamond:  Query the Internet Archive Library for almost anything\r\n\r\n![Internet Archive Search Result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_1_0-Internet_Archive.png)\r\n\r\n:key: Note: Additional SearchProviders contributed by the Swirl Community may be found in the `SearchProviders\u002Funtested` directory.\r\n\r\n# Improvements\r\n\r\n:small_blue_diamond: Swirl RAG is now available through a single API call, e.g. `?qs=metasearch&rag=true`\r\n\r\n:small_blue_diamond: Swirl now uses the latest 1.3.x OpenAI Python API.\r\n\r\n:small_blue_diamond: Swirl 3.1.0 was validated on Python 3.11.6 (note that Python 3.12.0 support is awating one final dependency update).\r\n\r\n:small_blue_diamond: The ServiceNow Knowledge SearchProvider was updated for the \"Vancouver\" release.\r\n\r\n:small_blue_diamond: Pip requirements are now frozen on the `main` branch for releases (addresses [Issue #912](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fissues\u002F912)).\r\n\r\n:small_blue_diamond: Default page-fetch configurations were added to the Enterprise Search, Mergers and Acquisition, Strategy Consulting, and Swirl Documentation Google PSE SearchProviders.\r\n\r\n:small_blue_diamond: Configurations for a default timeout value (30 seconds) and the text to display when the timeout is exceeded were added to RAG processing.\r\n\r\n:small_blue_diamond: Swirl's OpenAPI specification was updated: a new Swirl Postman collection and `swagger.json` are now available in the repo.\r\n\r\n:small_blue_diamond: Matching query terms are now highlighted in the AI Response results.\r\n\r\n:small_blue_diamond: Swirl now uses the latest 4.2.x Django packages.\r\n\r\n# Resolved Issues\r\n\r\n:small_blue_diamond: Back button behavior with RAG processing was improved.\r\n\r\n:small_blue_diamond: Addressed an issue in the version checker.\r\n\r\n:small_blue_diamond: Resolved an issue with some RequestsPost searches returning 500 errors.\r\n\r\n:small_blue_diamond: The Galaxy UI was updated to better handle an empty results set returned from some sources.\r\n\r\n:small_blue_diamond: The Galaxy UI now displays ChatGPT SearchProvider results in the main results list.\r\n\r\n:small_blue_diamond: The \"Generate AI Response\" option in the Galaxy UI is disabled until the full set of search results have returned.\r\n\r\n:small_blue_diamond: Addressd a regression with search re-run functionality in the Galaxy UI.\r\n\r\n# Known Issues\r\n\r\n:small_blue_diamond: Clicking a Microsoft Teams result sometimes results in this error from the Teams app.\r\n```\r\nWe cannot take you to that message because it's in a chat you're not in.\r\n```\r\nFor Teams links to resolve correctly, you must have the Microsoft Teams app open *before* clicking the result link.\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser prefetch AKA predictive service. [Turn off Chrome prediction service](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F). [Tu","2023-12-13T16:03:23",{"id":202,"version":203,"summary_zh":204,"released_at":205},117601,"v3.0.1","![Swirl Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Ftransparent_header_3.png)\r\n\r\n## Team Swirl is announcing General Availability of Swirl 3.0.1!\r\n\r\nThis update addresses issues with two of our default GitHub SearchProviders, improves Swirl Unix timestamp handling, and pins the version of OpenAI's Python library in Swirl's requirements.\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# Resolved Issues\r\n\r\n:small_blue_diamond:  The GitHub \"Issues\" and \"Pull Requests\" SearchProvider configurations were updated to realign them with the source's Search API.  Please review the `query_template` value in `SearchProviders\u002Fgithub.json` for Issues and Pull Requests and update existing configurations to match.\r\n\r\n:small_blue_diamond:  Swirl's handling of Unix timestamps was enhanced to better handle millisecond values when present in the source's response.\r\n\r\n:small_blue_diamond:  OpenAI's Python library is now pinned to a known-good version for Swirl.  To ensure Swirl is configured with this package version:\r\n- Stop Swirl:  `python swirl.py stop`\r\n- Re-run `.\u002Finstall.sh` in your `\u003Cswirl-home>` directory\r\n- Start Swirl:  `python swirl.py start`\r\n\r\n# Known Issues\r\n\r\n:small_blue_diamond: Clicking a Microsoft Teams result sometimes results in this error from the Teams app:\r\n```\r\nWe cannot take you to that message because it's in a chat you're not in.\r\n```\r\nFor Teams links to resolve correctly, you must have the Microsoft Teams app open *before* clicking the result link.\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide.html#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser prefetch AKA predictive service. [Turn off Chrome prediction service](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F). [Turn off Safari prefetch](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature).\r\n\r\nPlease report any issues with this to [support](#support).\r\n\r\n# Upgrading\r\n\r\n:warning:  Version 3.0.1 does not requires database migration.\r\n\r\n:warning: As of version 2.6, Swirl's start-up process no longer starts `redis`.  You must now have `redis` installed *and running* before starting Swirl.\r\n\r\n# Documentation\r\n\r\n[Overview](https:\u002F\u002Fdocs.swirl.today\u002F) | [Quick Start](https:\u002F\u002Fdocs.swirl.today\u002FQuick-Start) | [User Guide](https:\u002F\u002Fdocs.swirl.today\u002FUser-Guide) | [Admin Guide](https:\u002F\u002Fdocs.swirl.today\u002FAdmin-Guide) | [M365 Guide](https:\u002F\u002Fdocs.swirl.today\u002FM365-Guide) | [Developer Guide](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide) | [Developer Reference](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Reference) | [AI Guide](https:\u002F\u002Fdocs.swirl.today\u002FAI-Guide)\r\n\r\n# Support\r\n\r\n:small_blue_diamond: [Join the Swirl Community on Slack!](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw)\r\n\r\n:small_blue_diamond: Email: [support@swirl.today](mailto:support@swirl.today) with issues, requests, questions, etc - we'd love to hear from you!\r\n","2023-11-07T21:54:34",{"id":207,"version":208,"summary_zh":209,"released_at":210},117602,"v3.0.0","![Swirl Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002Ftransparent_header_3.png)\r\n\r\n## Team Swirl is announcing General Availability of Swirl 3.0!\r\nSwirl 3.0 includes Real-Time Retrieval Augmented Generation (RAG). Harness the power of Generative AI like OpenAI ChatGPT with internal data by querying existing search engines, databases, applications and enterprise services. Search for anything; Swirl will use a built-in non-generative LLM to find the best results from all sources, and present them. Adjust the selections, then RAG in real-time to get human-directed, verifiable AI insight. Fetch the freshest available data from systems of record - without extracting, copying and pre-indexing *anything*.\r\n\r\n### Community Contributions\r\n:trophy: This version of Swirl includes numerous contributions from the open source community.  A thousand thank-you's to the following GitHub users for their accepted, merged PRs: Yash Mathur ([Yash-sudo-web](https:\u002F\u002Fgithub.com\u002FYash-sudo-web)), [s-vamshi](https:\u002F\u002Fgithub.com\u002Fs-vamshi), Ikko Eltociear Ashimine ([eltociear](https:\u002F\u002Fgithub.com\u002Feltociear)), Akash Kundu ([Akash190104](https:\u002F\u002Fgithub.com\u002FAkash190104)), Biplob Sutradhar ([biplobsd](https:\u002F\u002Fgithub.com\u002Fbiplobsd)), Harsh Mahajan ([HarshMN2345](https:\u002F\u002Fgithub.com\u002FHarshMN2345)), Varanasi Aditya Sai ([fvaysh](https:\u002F\u002Fgithub.com\u002Ffvaysh)), Neel Shah ([neelshah2409](https:\u002F\u002Fgithub.com\u002Fneelshah2409)) and Chandan Mali ([Chandanmali](https:\u002F\u002Fgithub.com\u002FChandanmali))\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# New Features\r\n\r\n:small_blue_diamond: Swirl 3.0 supports Real-Time [Retrieval Augmented Generation (RAG)](https:\u002F\u002Fdocs.swirl.today\u002Findex#what-is-retrieval-augmented-generation-rag-does-swirl-support-it). No copying or indexing of data is required as Swirl queries existing search APIs. Once RAG is triggered, optionally using the updated Galaxy UI, the new Page Fetcher component will retrieve result URLs and prepare a prompt. Note that the community edition only supports fetching of pages that don't require authentication. Contact [hello@swirl.today](mailtO:hello@swirl.today) if you need to RAG using authenticated sources like M365, ServiceNow or Salesforce. Follow [the new AI Guide](https:\u002F\u002Fdocs.swirl.today\u002FAI-Guide) to get started - the main requirement is to add an OpenAI ChatGPT API key. (Other Generative AI platforms will be supported soon.) The European PMC SearchProvider is pre-configured for RAG so insights can be generated in minutes. \r\n\r\n:small_blue_diamond: The European PMC SearchProvider has been preloaded, set to active status, and configured to participate in RAG by default.\r\n![Swirl RAG with EPMC](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-RAG-EMPC.png)\r\n\r\n:small_blue_diamond: The new Retrieval Augmented Generation (RAG) Web Socket API is now available to developers. Refer to the [Developer Guide](https:\u002F\u002Fdocs.swirl.today\u002FDeveloper-Guide#retrieval-augmented-generation-web-socket-api) for details.\r\n\r\n## New Swirl Documentation:  [https:\u002F\u002Fdocs.swirl.today\u002F](https:\u002F\u002Fdocs.swirl.today\u002F)\r\nSwirl's product documentation has a new home, a new template, and a handy new find-in-page option! \r\n\r\nCheck it out:\r\n![Swirl docs](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-Docs-1.png)\r\n![Swirl docs find in page](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-Docs-2.png)\r\n\r\nSwirl 3.0 includes a new Google PSE SearchProvider that targets the Swirl documentation website. This SearchProvider is enabled by default so you can search Swirl documentation with Swirl!\r\n![Swirl docs result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-Docs-3.png)\r\n\r\n## New SearchProviders\r\nQuery for a specific Bitcoin Address or Transaction Hash using the new Blockchain.com Bitcoin SearchProviders:\r\n![Bitcoin Address result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-BTC-address.png)\r\n![Bitcoin Transaction result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-BTC-transaction.png)\r\n\r\nSearch organizations in Crunchbase with our new Crunchbase Basic SearchProvider:\r\n![Crunchbase result](https:\u002F\u002Fraw.githubusercontent.com\u002Fswirlai\u002Fswirl-search\u002Fmain\u002Fdocs\u002Fimages\u002F3_0_0-Crunchbase.png)\r\n\r\n:key: Note: SearchProviders contributed by the Swirl Community, including those for Algolia and Trello, may be found in the `SearchProviders\u002Funtested` directory. Some may include Connectors as well as SearchProviders. All will be moved into the production SearchProviders and pre-loaded in future releases.\r\n\r\n# Improvements\r\n\r\n:small_blue_diamond: Repository Standards: Swirl has published a full set of [GitHub Community Standards](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fcommunity) to support our growing community of contributors.\r\n\r\n:small_blue_diamond: Microsoft OneDrive SearchPr","2023-10-27T16:29:34",{"id":212,"version":213,"summary_zh":214,"released_at":215},117603,"v2.6.0","![Swirl Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Ftransparent_header_3.png)\r\n\r\n## Team Swirl is announcing General Availability of Swirl 2.6!\r\n\r\nThis release features new SearchProviders for [ServiceNow](https:\u002F\u002Fwww.servicenow.com\u002F), [Google News](https:\u002F\u002Fnews.google.com\u002F), and a searchable [Hacker News](https:\u002F\u002Fhn.algolia.com\u002F) implementation!  We've also validated Swirl on the latest stable Python version (*3.11.5*) and updated our `Dockerfile` image to the latest stable Debian release (*Bookworm*).\r\n\r\n### :warning: As of Release 2.6, Swirl's start-up process no longer starts `redis`.  You must now have `redis` installed *and runnning* before starting Swirl.\r\n\r\n![Release 2.5.1 New SearchProviders](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002F2_6-New_SPs-1.png)\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# New Features\r\n\r\n:small_blue_diamond:  Search the ServiceNow Knowledge and Service Catalog centers using new Basic Auth SearchProviders.\r\n* For the `credentials`, ServiceNow requries an admin level account for searching.\r\n* Both the `url` and `result_mappings` require the ServiceNow instance domain.\r\n\r\n:small_blue_diamond:  Search Google News posts with a dedicated SearchProvider for this source.\r\n\r\n:small_blue_diamond: Search Stories and Comments from Hacker News with new SearchProviders for each.\r\n\r\n:small_blue_diamond: Swirl now checks to see if you are running the latest version at startup.\r\n```\r\nYou're using version 2.6 of Swirl, the current version.\r\n```\r\n\r\n# Improvements\r\n\r\n:small_blue_diamond:  Swirl's installation script (`install.sh`) will now check for a running Redis instance and for the presence of `jq` on the system, and emit helpful messages if they are not found.\r\n\r\n:small_blue_diamond:  Swirl 2.6 has been verified on the latest stable Python release (*3.11.5*).\r\n\r\n:small_blue_diamond: The Debian image in Swirl's `Dockerfile` has been updated from `3.11.4-slim-bullseye` to `3.11.5-slim-bookworm`, which addresses several known vulnerabilities.\r\n\r\n:small_blue_diamond:  Configuration for an `OPENAI_API_KEY` is now available in Swirl's `.env` file for use with the ChatGPT `query_processor` and `query_mappings` override options.\r\n\r\n# Resolved Issues\r\n\r\n:small_blue_diamond:  Removed an unecessary duplicate entry in `requirements.txt`\r\n\r\n:small_blue_diamond:  Addressed common non-date formatting issues  in the `DateFinderResultProcessor`\r\n\r\n:small_blue_diamond:  Removed unnessesary parameter from the query `url` of the EuropePMC SearchProvider\r\n\r\n# Known Issues\r\n\r\n:small_blue_diamond: Clicking a Microsoft Teams result sometimes results in this error from the Teams app:\r\n```\r\nWe cannot take you to that message because it's in a chat you're not in.\r\n```\r\nFor Teams links to resolve correctly, you must have the Microsoft Teams app open *before* clicking the result link.\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser prefetch AKA predictive service. [Turn off Chrome prediction service](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F). [Turn off Safari prefetch](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature).\r\n\r\nPlease report any issues with this to [support](#support).\r\n\r\n\r\n# Upgrading\r\n\r\n:warning:  Version 2.6 does not require a database migration.\r\n\r\n### :warning: As of version 2.6, Swirl's start-up process no longer starts `redis`.  You must now have `redis` installed *and runnning* before starting Swirl.\r\n\r\n\r\n# Documentation\r\n\r\n[Overview](https:\u002F\u002Fdocs.swirl.today\u002F) | [Quick Start](https:\u002F\u002Fdocs.swirl.today\u002F1.-Quick-Start) | [User Guide](https:\u002F\u002Fdocs.swirl.today\u002F2.-User-Guide) | [Admin Guide](https:\u002F\u002Fdocs.swirl.today\u002F3.-Admin-Guide) | [M365 Guide](https:\u002F\u002Fdocs.swirl.today\u002F4.-M365-Guide) | [Developer Guide](https:\u002F\u002Fdocs.swirl.today\u002F5.-Developer-Guide) | [Developer Reference](https:\u002F\u002Fdocs.swirl.today\u002F6.-Developer-Reference)\r\n_(updated links on 13-October-2023)_\r\n\r\n# Support\r\n\r\n:small_blue_diamond: [Join the Swirl Community on Slack!](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw)\r\n\r\n:small_blue_diamond: Email: [support@swirl.today](mailto:support@swirl.today) with issues, requests, questions, etc - we'd love to hear from you!\r\n\r\n\u003Cbr\u002F>","2023-09-25T17:07:51",{"id":217,"version":218,"summary_zh":219,"released_at":220},117604,"v2.5.1","![Swirl Metasearch Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl-metasearch-logo.png)\r\n\r\nTeam Swirl is announcing General Availability of Swirl 2.5.1! \r\n\r\nThis release features three new SearchProviders ([arXiv.org](https:\u002F\u002Farxiv.org\u002F), [EuropePMC.org](https:\u002F\u002Feuropepmc.org\u002F), and [LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002F) profiles via Google PSE), enhanced result processing to handle XML responses from source APIs, plus updates to the ChatGPT `Connector` and `QueryProcessor` to support the latest GPT-3.5-Turbo and GPT-4 models.\r\n\r\n![Release 2.5.1 New SearchProviders](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002F2_5_1-New_SPs.png)\r\n\r\n🥇 We would also like to give a shout out to GitHub user [Rajpratik71](https:\u002F\u002Fgithub.com\u002FRajpratik71) for [his contribution](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fpull\u002F511) to this release which improved our `Dockerfile` configuration.  Many thanks for contributing to Swirl!\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# New Features\r\n\r\n:small_blue_diamond:  Both the ChatGPT [`Connector`](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fblob\u002Fmain\u002Fswirl\u002Fconnectors\u002Fchatgpt.py) and [`QueryProcessor`](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fblob\u002Fmain\u002Fswirl\u002Fprocessors\u002Fchatgpt_query.py) were updated to use OpenAI's [`ChatCompletion`](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fchat) method which supports the latest GPT models -  including GPT-4 - and a much greater range of interactivity.\r\n\r\n- Three new Tags and one new  `query_mapping` option are available for the ChatGPT SearchProvider to help shape the Prompt or Default Role passed to ChatGPT along with the user's query.\r\n- The ChatGPT SearchProvder now queries the GPT-3.5-Turbo model by default.\r\n\r\n:small_blue_diamond:  Search LinkedIn profiles with the new LinkedIn Google PSE and SearchProvider.\r\n\r\n:small_blue_diamond:  Search the academic paper collections of [arXiv.org](https:\u002F\u002Farxiv.org\u002F) and [EuropePMC.org](https:\u002F\u002Feuropepmc.org\u002F) with new SearchProivders for each.\r\n\r\n:small_blue_diamond:  New result processing to handle XML responses from source APIs; see this in action with the [arXiv.org](https:\u002F\u002Farxiv.org\u002F) SearchProvider.\r\n\r\n:small_blue_diamond:  Swirl's `Dockerfile` now uses the `--no-cache-dir` flag with `pip` to save space.\r\nThanks to GitHub user [Rajpratik71](https:\u002F\u002Fgithub.com\u002FRajpratik71) for [this contribution](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fpull\u002F511)!\r\n\r\n\r\n# Improvements\r\n\r\n:small_blue_diamond:  The Subscribe functionality was reworked to better handle Microsoft Authentication for [subscribe runs that include M365 sources](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide#subscribe-to-a-search-with-m365-sources).\r\n\r\n:small_blue_diamond:  Some default SearchProviders have additional Tags:  `Internal` or `Develop`.  See the documentation for details about targeting specific groups of sources using [SearchProvider Tags](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F2.-User-Guide#organizing-searchproviders-with-active-default-and-tags).\r\n\r\n:small_blue_diamond:  The `install.sh` script was further enhanced to synchronize spaCy model and code version updates.\r\n\r\n\r\n# Resolved Issues\r\n\r\n:small_blue_diamond:  Addressed an issue where Swirl could hang due to very long source repsonse times. Swirl's default timeout value in [`swirl_server\u002Fsettings.py`](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fblob\u002Fmain\u002Fswirl_server\u002Fsettings.py) is now: `SWIRL_TIMEOUT_DEFAULT = 10`\r\n\r\n:small_blue_diamond:  Corrected a count inconsistency in the `CosineRelevancyResultProcessor` \r\n\r\n:small_blue_diamond:  Removed duplicate entries from `urls.py`\r\n\r\n:small_blue_diamond:  Fixed a regression where unmatched Tags were being dropped in searches\r\n\r\n:small_blue_diamond:  ChatGPT no longer returns a 500 error when enabled for Subscribed searches\r\n\r\n:small_blue_diamond:  After authenticating to Mircosoft in the Galaxy UI, the first search run now correctly includes M365 resutls\r\n\r\n:small_blue_diamond: Addressed an issue with date-sorting in the M365 sources:\r\n\r\n- The default date-sort for M365 sources is:  `DEFAULT_DATESORT_X = \"createdDateTime desc\"`\r\n- This can be overridden by setting `DATE_SORT` in the SearchProvider `query_mapping`\r\n- Owners of a Search object or Swirl's Subscribe feature can set the `sort` attribute on a Search\r\n\r\n\r\n# Known Issues\r\n\r\n:small_blue_diamond: Clicking a Microsoft Teams result sometimes results in this error from the Teams app:\r\n```\r\nWe cannot take you to that message because it's in a chat you're not in.\r\n```\r\nFor Teams links to resolve correctly, you must have the Microsoft Teams app open *before* clicking the result link.\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser pre","2023-08-29T16:27:28",{"id":222,"version":223,"summary_zh":224,"released_at":225},117605,"v2.5.0","![Swirl Metasearch Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl-metasearch-logo.png)\r\n\r\nTeam Swirl is announcing General Availability of Swirl 2.5! \r\n\r\nThe theme for this release was performance. Configured with 12 SearchProviders, Swirl 2.5 supports up to 15 queries\u002Fsecond on a Standard F16s v2 server (16 vcpus, 32 GiB memory) with a median response time of 3 seconds.  \r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n# New Features\r\n\r\n## Performance Improvements\r\n\r\n:small_blue_diamond: Swirl's asynchronous back-end was refactored to use the `group` method and replaced RabbitMQ with Redis\r\n\r\n:small_blue_diamond:  Relevancy processing was split into two stages to improve performance\r\n* The revised `CosineRelevancyPostResultProcessor` must be in the `Search.post_result_processors` list.\r\n* Please review the JSON in the `SearchProviders\u002F` directory and update existing configurations to match. \r\n\r\n## HubSpot SearchProviders\r\n\r\n:small_blue_diamond:  Search Company, Contact, and Deal records with new token-based HubSpot SearchProviders\r\n* HubSpot requires creation of a \"Private Apps\" API token by the Super Admin with [these scopes](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002FHubSpot-scopes.png)\r\n* In `result_mappings`, the `url` mapping must contain the HubSpot Org ID\r\n\r\n# Improvements\r\n\r\n:small_blue_diamond:  The `DateFindingResultProcessor` was added to the Google PSE SearchProvider JSON. It finds a date in a large percentage of results that otherwise wouldn't have one, and copies the date to the `date_published` field.  Existing PSE SearchProvider configurations should be updated as follows:\r\n\r\n```\r\n\"result_processors\": [\r\n            \"MappingResultProcessor\",\r\n            \"DateFinderResultProcessor\",\r\n            \"CosineRelevancyResultProcessor\"\r\n        ],\r\n```\r\n\r\n:small_blue_diamond: Swirl's control script (`python swirl.py`) was updated\r\n\r\n* A `default` key was added to the services list, including `debug`, in `swirl\u002Fservices.py`\r\n* The `celery-beats` service was set to `default: False`\r\n* `swirl.py` was modified to load only services with `default: True`\r\n\r\nTo use the subscribe or expiration features, `celery-beats` must be started manually:\r\n`python swirl.py start celery-beats`\r\n\r\n`Celery-beats` must also be stopped separately. \r\n\r\n:small_blue_diamond:  Swirl now outputs a single log entry with each request at the default log level INFO\r\n\r\n```\r\n2023-08-02 10:49:09,466 INFO     admin search 452 FULL_RESULTS_READY 32 2.2\r\n```\r\n\r\nDetailed logging is available in Debug mode: restart Swirl with the `--debug` flag to enable\r\n\r\n:small_blue_diamond:  The `install.sh` script was refactored to better handle spaCy upgrades\r\n\r\n:small_blue_diamond:  Swirl's Docker image was updated to use the latest, stable release of Python, version 3.11.4\r\n\r\n:small_blue_diamond:  Use of the unsafe `eval()` function was removed\r\n\r\n\r\n# Resolved Issues\r\n\r\n:small_blue_diamond:  Swirl's log files now persist and append new entries across restarts\r\n\r\n:small_blue_diamond:  The SearchProvider configurations for Elastic, OpenSearch, and Microsoft Outlook Messages were updated\r\n\r\n:small_blue_diamond:  A seesion-related issue in the connectors for Sqlite3, PostgreSQL, and Elastic was fixed\r\n\r\n:small_blue_diamond:  Errors in the `DedupeByFieldResultProcessor` were addressed\r\n\r\n:small_blue_diamond:  The SearchProvider `results_per_query` value is handled correctly now\r\n\r\n:small_blue_diamond:  An issue where some searches didn't appear to reach the Swirl backend was fixed\r\n\r\n:small_blue_diamond:  Unnecessary WARNING messages were removed from the logs\r\n\r\n:small_blue_diamond: Result URLs on Search objects are now constructed correctly using the Request instead of loading from django settings\r\n\r\n\r\n# Known Issues\r\n\r\n:small_blue_diamond: Clicking a Microsoft Teams result sometimes results in this error from the MS Teams app:\r\n```\r\nWe cannot take you to that message because it's in a chat you're not in.\r\n```\r\nFor Teams links to resolve correctly, you must have the Microsoft Teams app open *before* clicking the result link.\r\n\r\n:small_blue_diamond: Subscribed searches are not returning results for Microsoft sources; this will be addressed in an upcoming release.\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser prefetch AKA predictive service. [Turn off Chrome prediction service](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F). [Turn off Safari prefetch](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature).\r\n\r\nPlease report any issues with this to [support](#support).\r\n\r\n\r\n# Upgrading\r\n\r\n:warning:  Version 2.5 requires database migration. See [Upgrading ","2023-08-02T17:58:31",{"id":227,"version":228,"summary_zh":229,"released_at":230},117606,"v2.1.1","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl-metasearch-logo.png)\r\n\r\nThis update addresses an issue in the OpenSearch, Elasticsearch, and PostgreSQL connectors.\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n## Resolved Issues\r\n\r\n:small_blue_diamond:  The OpenSearch, Elasticsearch, and PostgreSQL connectors were updated to address an issue that resulted in a `positional argument` error.  Please update your Swirl instance to v. 2.1.1 to correct this error.\r\n\r\n\u003Cbr\u002F>\r\n\r\n## Known Issues\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser prefetch AKA predictive service. [Turn off Chrome prediction service](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F). [Turn off Safari prefetch](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature).\r\n\r\nPlease [report any issues](https:\u002F\u002Fgithub.com\u002Fsidprobstein\u002Fswirl-search\u002Fissues\u002F) with this to [support](#support).\r\n\r\n\u003Cbr\u002F>\r\n\r\n# Upgrading\r\n\r\n:warning: Version 2.1.1 does not require a database migration.\r\n\r\n\u003Cbr\u002F>\r\n\r\n# Documentation Wiki\r\n\r\n:small_blue_diamond: [Quick Start](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F1.-Quick-Start)\r\n:small_blue_diamond: [User Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F2.-User-Guide)\r\n:small_blue_diamond: [Admin Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F3.-Admin-Guide)\r\n:small_blue_diamond: [M365 Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F4.-M365-Guide)\r\n:small_blue_diamond: [Developer Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide)\r\n:small_blue_diamond: [Developer Reference](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F6.-Developer-Reference)\r\n\u003Cbr\u002F>\r\n\r\n# Support\r\n\r\n:small_blue_diamond: [Join the Swirl Metasearch Community on Slack!](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw)\r\n\r\n:small_blue_diamond: [Create a GitHub Issue](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fissues) if something doesn't work, isn't clear, or should be documented\r\n\r\n:small_blue_diamond: Email: [support@swirl.today](mailto:support@swirl.today) with issues, requests, questions, etc - we'd love to hear from you!\r\n\r\n\u003Cbr\u002F>","2023-07-21T17:51:44",{"id":232,"version":233,"summary_zh":234,"released_at":235},117607,"v2.1.0","![Swirl Metasearch Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl-metasearch-logo.png)\r\n\r\nTeam Swirl is announcing General Availability of Swirl Metasearch 2.1!\r\n\r\nThis version features the new Galaxy User Interface with Dark Mode, new GitHub SearchProviders, support for custom request headers, a new `DateFinderResultProcessor` that finds dates in the body field and copies them to `date_published`, plus new Result Processors for trimming and cleaning long responses. 2.1 also improves handling of recurring Microsoft 365 Calendar events and Outlook Message threads, showing only the most recent.\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n## New Features\r\n\r\n:small_blue_diamond:  Introducing the Galaxy UI:\r\n![Swirl Results - Galaxy Dark](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl_results-galaxy_dark.png)\r\n\r\n![Swirl Results - Galaxy Light](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl_results-galaxy_light.png)\r\n\r\n:small_blue_diamond:  Search public repositories with token-based GitHub SearchProviders for Code, Commits, Pull Requests, and Issues\r\n![Swirl Results - GitHub Dark](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl_results-github_dark.png)\r\n\r\n:small_blue_diamond:  Micrsoft 365 Calendar Events pre-configured SearchProvider with automatic hiding of recurring meetings\r\n![Swirl Results - GitHub Dark](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl_results-calendar_dark.png)\r\n\r\n:small_blue_diamond:  New `date_published_display` option available in SearchProvider `result_mappings`\r\nYou can now specify different values for `date_published` and `date_published_display` in SearchProvider configurations:\r\n```\r\n\"result_mappings\":  ... date_published=foo.bar.date1,date_published_display=foo.bar.date2 ...\r\n```\r\nSwirl Result objects will reflect both date values:\r\n```\r\n\"date_published\": \"2010-01-01 00:00:00\",\r\n\"date_published_display\": \"c2010\",\r\n```\r\nAnd, the new Galaxy UI displays `date_published_display` while date-sorting by `date_published`:\r\n![Swirl Results - Galaxy Dates Dark](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl_results-galaxy_dates_dark.png)\r\n\r\n:small_blue_diamond:  Pass custom HTTP Header values in SearchProviders\r\nThe optional `http_request_headers` field is available to all SearchProviders for passing custom HTTP Header values to the source alongside the user's query.  The new GitHub SearchProviders use this feature to return a more accurate result snippet from GitHub that is then mapped to Swirl's `body` field:\r\n```\r\n\"http_request_headers\": {\r\n            \"Accept\": \"application\u002Fvnd.github.text-match+json\"\r\n        },\r\n\r\n\"result_mappings\": \"title=name,body=text_matches[*].fragment, ...\r\n```\r\n\r\n:small_blue_diamond:  New Result Processor: `LenLimitingResultProcessor`\r\nThis processor checks to see if the `title` and `body` responses from a source exceed a configurable length, truncates anything after that value, and adds an elipsis (\"...\").  If the `body` field has been truncated, the processor reports the entire response in a new `body_full` field in the Payload.  The default `max_length` value for this processor is set in `swirl_server\u002Fsettings.py`:  `SWIRL_MAX_FIELD_LEN = 512` and can be overridden for a specific SearchProvider using a new Tag value (`max_length:###`): \r\n```\r\n\"tags\": [\r\n        \"Articles\",\r\n        \"Wiki\",\r\n        \"YouTrack\",\r\n        \"max_length:256\"\r\n    ]\r\n```\r\nThe processor reports on the number of items updated as expected. It should be considered for sources that consistently return lengthy `title` or `body` fields and should follow the `MappingResultProcessor`.  The default SearchProvider configurations for Atlassian Jira and Confluence have been updated with this processor.\r\n```\r\n\"result_processors\": [\r\n            \"MappingResultProcessor\",\r\n            \"LenLimitingResultProcessor\"\r\n        ],\r\n```\r\n\r\n:small_blue_diamond:  New Result Processor: `CleanTextResultProcessor`\r\nThis processor removes non-alphanumeric characters from the source response.  It should be considered for lengthy responses where URLs or other HTML or Markdown syntax appear in results.  It should be installed before the `LenLimitingResultProcessor` when both are used.  The default SearchProvider configurations for JetBrains YouTrack have been updated with these processors.\r\n```\r\n\"result_processors\": [\r\n            \"MappingResultProcessor\",\r\n            \"CleanTextResultProcessor\",\r\n            \"LenLimitingResultProcessor\"\r\n        ],\r\n```\r\n:small_blue_diamond:  New Result Processor:  `DateFinderResultProcessor`\r\nThis processor looks for a date in any of the following forms in the `body` field of each result item. Should it find one, and the `date_published` for that item is `'unknown'`, it replaces `date_published` with the date extracted from the `body`, and not","2023-07-10T21:26:09",{"id":237,"version":238,"summary_zh":239,"released_at":240},117608,"v2.0.3","![SWIRL Logo](https:\u002F\u002Fraw.githubusercontent.com\u002Fwiki\u002Fswirlai\u002Fswirl-search\u002Fimages\u002Fswirl-metasearch-logo.png)\r\n\r\n# Swirl Metasearch 2.0.3\r\n\r\nThis version adds a generic `RequestsPost` Connector and example SearchProvider.\r\n\r\n### PLEASE STAR OUR REPO: [https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search)\r\n\r\n\u003Cbr\u002F>\r\n\r\n## New Features\r\n\r\n:small_blue_diamond:  A new `RequestsPost` Connector and example SearchProvider are available as of this release.  See the [Developer Reference Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F6.-Developer-Reference#requestspost) for more details, or [Contact Support](mailto:support@swirl.today) for help getting started.\r\n\u003Cbr\u002F>\r\n\r\n## Known Issues\r\n\r\n:small_blue_diamond: [Creating searches from a browser with q=](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide#create-a-search-object-with-the-q-url-parameter) can sometimes create two Search objects. \r\n\r\nThis is because of browser prefetch AKA predictive service. [Turn off Chrome prediction service](https:\u002F\u002Fwww.ghacks.net\u002F2019\u002F04\u002F23\u002Fmissing-chromes-use-a-prediction-service-setting\u002F). [Turn off Safari prefetch](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F29214246\u002Fhow-to-turn-off-safaris-prefetch-feature).\r\n\r\nPlease [report any issues](https:\u002F\u002Fgithub.com\u002Fsidprobstein\u002Fswirl-search\u002Fissues\u002F) with this to [support](#support).\r\n\r\n\u003Cbr\u002F>\r\n\r\n# Upgrading\r\n\r\n:warning: Version 2.0.3 does not require a database migration.\r\n\r\n\u003Cbr\u002F>\r\n\r\n# Documentation Wiki\r\n\r\n:small_blue_diamond: [Quick Start](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F1.-Quick-Start)\r\n:small_blue_diamond: [User Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F2.-User-Guide)\r\n:small_blue_diamond: [Admin Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F3.-Admin-Guide)\r\n:small_blue_diamond: [M365 Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F4.-M365-Guide)\r\n:small_blue_diamond: [Developer Guide](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F5.-Developer-Guide)\r\n:small_blue_diamond: [Developer Reference](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fwiki\u002F6.-Developer-Reference)\r\n\u003Cbr\u002F>\r\n\r\n# Support\r\n\r\n:small_blue_diamond: [Join the Swirl Metasearch Community on Slack!](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fswirlmetasearch\u002Fshared_invite\u002Fzt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw)\r\n\r\n:small_blue_diamond: [Create a GitHub Issue](https:\u002F\u002Fgithub.com\u002Fswirlai\u002Fswirl-search\u002Fissues) if something doesn't work, isn't clear, or should be documented\r\n\r\n:small_blue_diamond: Email: [support@swirl.today](mailto:support@swirl.today) with issues, requests, questions, etc - we'd love to hear from you!\r\n\r\n\u003Cbr\u002F>","2023-06-08T19:23:09"]