前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lumos——一款由大模型Ollama提供的本地LLM浏览网页Chrome扩展

Lumos——一款由大模型Ollama提供的本地LLM浏览网页Chrome扩展

作者头像
山行AI
发布2024-02-26 21:13:16
1.2K0
发布2024-02-26 21:13:16
举报
文章被收录于专栏:山行AI山行AI

春节在家,翻了很多优秀的AI开源项目,这里选几款和大家分享一下。Lumos是一款由本地LLM驱动(也就是大模型本地布署),用于浏览网页的RAG LLM协助工具。

这款Chrome扩展由Ollama[1]提供支持。推理操作在您的本地机器上完成,不需要任何外部服务器支持。然而,由于Chrome扩展平台的安全限制,该应用确实依赖于本地服务器支持以运行LLM。这个应用的灵感来源于Web LLM项目[2]提供的Chrome扩展示例[3]LangChain[4]提供的本地LLM示例[5]

Ollama(首页)[6]Ollama(GitHub)[7]

使用场景

•摘要长线索在问题追踪网站、论坛和社交媒体网站上。•新闻文章摘要。•关于商业和产品页面上的评论提问。•关于长篇技术文档提问。•... 还有什么?

Ollama服务器

需要本地Ollama服务器用于嵌入数据库和LLM推理。在这里[8]下载并安装Ollama及其CLI。

启动服务器

示例:

代码语言:javascript
复制
OLLAMA_ORIGINS=chrome-extension://* ollama serve

终端输出:

代码语言:javascript
复制
2023/11/19 20:55:16 images.go:799: 总共blobs:6
2023/11/19 20:55:16 images.go:806: 移除的未使用blobs总数:0
2023/11/19 20:55:16 routes.go:777: 正在监听127.0.0.1:11434(版本0.1.10)

注意:环境变量OLLAMA_ORIGINS必须设置为chrome-extension://*以允许来自Chrome扩展的请求。

Docker

Ollama服务器也可以在Docker容器中运行[9]。容器应将OLLAMA_ORIGINS环境变量设置为chrome-extension://*

使用-e标志运行docker run来设置OLLAMA_ORIGINS环境变量:

代码语言:javascript
复制
docker run -e OLLAMA_ORIGINS="chrome-extension://*" -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Chrome扩展

在项目目录中,您可以运行:

npm test

以交互式观察模式启动测试运行器。有关更多信息,请参阅运行测试[10]部分。

npm run lint

src文件上运行eslintprettier

npm run build

将应用程序构建为生产环境到dist文件夹。它正确地将React打包在生产模式下,并优化构建以获得最佳性能。

构建被压缩,文件名包含哈希。您的应用准备好部署了!

有关更多信息,请参阅部署[11]部分。

装载未打包的扩展(安装)

https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/#load-unpacked

发布版本

如果您没有安装npm,您可以从发布[12]页面下载预构建的扩展包。

Lumos选项

右键点击扩展图标并选择`Options

`来访问扩展的选项页面[13]。

Ollama模型:选择所需模型(例如llama2)•Ollama主机:选择所需主机(默认为http://0.0.0.0:11434)•向量存储TTL(分钟):将URL内容存储在向量存储缓存中的分钟数。•内容解析器配置:Lumos的默认内容解析器将提取页面的<body></body>标签之间的所有文本内容。要自定义内容解析器,请添加一个条目到配置中。

内容解析器配置

每个域可以有自己的内容解析器。

chunkSize:将页面内容分块索引到RAG向量存储中的字符数量•chunkOverlap:分块索引到RAG向量存储中的字符重叠数量•selectors:执行以检索页面内容的document.querySelector()查询•selectorsAll:执行以检索页面内容的document.querySelectorAll()查询

参见文档如何创建自定义内容解析器[14]。参见文档querySelector()[15]和querySelectorAll()[16]以确认所有查询能力。

示例:

代码语言:javascript
复制
{  "default": {    "chunkSize": 500,    "chunkOverlap": 0,  "selectors": [      "body"
    ],    "selectorsAll": []  },  "medium.com": {    "chunkSize": 500,    "chunkOverlap": 0,    "selectors": [      "article"
    ],    "selectorsAll": []  },  "reddit.com": {    "chunkSize": 500,    "chunkOverlap": 0,    "selectors": [],    "selectorsAll": [      "reddit-comment"
    ]  },  "stackoverflow.com": {    "chunkSize": 500,    "chunkOverlap": 0,    "selectors": [      "#question-header",      "#mainbar"
    ],    "selectorsAll": []  },  "substack.com": {    "chunkSize": 500,    "chunkOverlap": 0,    "selectors": [      "article"
    ],    "selectorsAll": []  },  "wikipedia.org": {    "chunkSize": 2000,    "chunkOverlap": 500,    "selectors": [      "#bodyContent"
    ],    "selectorsAll": []  },  "yelp.com": {    "chunkSize": 500,    "chunkOverlap": 0,    "selectors": [      "#location-and-hours",      "#reviews"
    ],    "selectorsAll": []  }}

突出显示的内容

另外,如果页面上的内容被突出显示(例如,突出显示的文本),那么将解析该内容,而不是来自内容解析器配置产生的内容。

多模态

Lumos支持多模态模型!当前页面上存在的图像将被下载并绑定到模型用于提示。在这里[17]查看文档和示例。

阅读

•由Ollama提供支持的浏览器中的本地LLM[18]•由Ollama提供支持的浏览器中的本地LLM(第2部分)[19]•让我们正常化在线、内存中的RAG!(第3部分)[20]

声明

本文由山行翻译整理自:https://github.com/andrewnguonly/Lumos, 如果对您有帮助,请帮忙点赞、关注、收藏,谢谢~

References

[1] Ollama: https://ollama.ai/ [2] Web LLM项目: https://webllm.mlc.ai/ [3] Chrome扩展示例: https://github.com/mlc-ai/web-llm/tree/main/examples/chrome-extension [4] LangChain: https://github.com/langchain-ai/langchainjs [5] 本地LLM示例: https://js.langchain.com/docs/use_cases/question_answering/local_retrieval_qa [6] Ollama(首页): https://ollama.ai/ [7] Ollama(GitHub): https://github.com/jmorganca/ollama [8] 这里: https://ollama.ai/ [9] 在Docker容器中运行: https://hub.docker.com/r/ollama/ollama [10] 运行测试: https://facebook.github.io/create-react-app/docs/running-tests [11] 部署: https://facebook.github.io/create-react-app/docs/deployment [12] 发布: https://github.com/andrewnguonly/Lumos/releases [13] 选项页面: https://developer.chrome.com/docs/extensions/develop/ui/options-page [14] 如何创建自定义内容解析器: https://github.com/andrewnguonly/Lumos/blob/main/docs/content_parser.md [15] querySelector(): https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector [16] querySelectorAll(): https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll [17] 这里: https://github.com/andrewnguonly/Lumos/blob/main/docs/multimodal.md [18] 由Ollama提供支持的浏览器中的本地LLM: https://medium.com/@andrewnguonly/local-llm-in-the-browser-powered-by-ollama-236817f335da [19] 由Ollama提供支持的浏览器中的本地LLM(第2部分): https://medium.com/@andrewnguonly/local-llm-in-the-browser-powered-by-ollama-part-2-6eb10caf39a1 [20] 让我们正常化在线、内存中的RAG!(第3部分): https://medium.com/@andrewnguonly/lets-normalize-online-in-memory-rag-88e8169e9806

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山行AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景
  • Ollama服务器
    • 启动服务器
      • Docker
      • Chrome扩展
        • npm test
          • npm run lint
            • npm run build
              • 装载未打包的扩展(安装)
                • 发布版本
                • Lumos选项
                  • 内容解析器配置
                    • 突出显示的内容
                    • 多模态
                    • 阅读
                    • 声明
                      • References
                      相关产品与服务
                      对象存储
                      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档