{"id":43543331,"url":"https://github.com/devsapp/start-llamaindex","last_synced_at":"2026-02-03T18:37:52.922Z","repository":{"id":270457375,"uuid":"859117570","full_name":"devsapp/start-llamaindex","owner":"devsapp","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-31T09:29:53.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-12-31T10:27:26.416Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devsapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-18T05:46:22.000Z","updated_at":"2024-12-31T09:29:57.000Z","dependencies_parsed_at":"2024-12-31T10:28:26.916Z","dependency_job_id":"4c3ed477-c835-48cf-8197-fa36092a9fdf","html_url":"https://github.com/devsapp/start-llamaindex","commit_stats":null,"previous_names":["devsapp/start-llamaindex"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devsapp/start-llamaindex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-llamaindex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-llamaindex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-llamaindex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-llamaindex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devsapp","download_url":"https://codeload.github.com/devsapp/start-llamaindex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-llamaindex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29052640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-03T18:37:52.166Z","updated_at":"2026-02-03T18:37:52.915Z","avatar_url":"https://github.com/devsapp.png","language":"Python","readme":"\n\u003e 注：当前项目为 Serverless Devs 应用，由于应用中会存在需要初始化才可运行的变量（例如应用部署地区、函数名等等），所以**不推荐**直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用，**强烈推荐**通过 `s init ${模版名称}` 的方法或应用中心进行初始化，详情可参考[部署 \u0026 体验](#部署--体验) 。\n\n# start-llamaindex 帮助文档\n\n\u003cdescription\u003e\n\n基于 LlamaIndex 构建 RAG 应用\n\n\u003c/description\u003e\n\n\u003ccodeUrl\u003e\n\n\n\n\u003c/codeUrl\u003e\n\u003cpreview\u003e\n\n\n\n\u003c/preview\u003e\n\n\n## 前期准备\n\n使用该项目，您需要有开通以下服务并拥有对应权限：\n\n\u003cservice\u003e\n\n\n\n| 服务/业务 |  权限  | 相关文档 |\n| --- |  --- | --- |\n| 函数计算 |  AliyunFCFullAccess | [帮助文档](https://help.aliyun.com/product/2508973.html) [计费文档](https://help.aliyun.com/document_detail/2512928.html) |\n| 云数据库RDS |  AliyunRDSFullAccess | [帮助文档](undefined) [计费文档](undefined) |\n| 对象存储 |  AliyunFCServerlessDevsRolePolicy | [帮助文档](https://help.aliyun.com/zh/oss) [计费文档](https://help.aliyun.com/zh/oss/product-overview/billing) |\n| 日志服务 |  AliyunFCServerlessDevsRolePolicy | [帮助文档](https://help.aliyun.com/zh/sls) [计费文档](https://help.aliyun.com/zh/sls/product-overview/billing) |\n| 专有网络 |  AliyunFCServerlessDevsRolePolicy | [帮助文档](https://help.aliyun.com/zh/vpc) [计费文档](https://help.aliyun.com/zh/vpc/product-overview/billing) |\n\n\u003c/service\u003e\n\n\u003cremark\u003e\n\n\n\n\u003c/remark\u003e\n\n\u003cdisclaimers\u003e\n\n\n\n\u003c/disclaimers\u003e\n\n## 部署 \u0026 体验\n\n\u003cappcenter\u003e\n   \n:fire: 通过 [Dipper 应用中心](https://devs.console.aliyun.com/applications/createtemplate=start-llamaindex) ，[![Deploy with Severless Devs](https://img.alicdn.com/imgextra/i1/O1CN01w5RFbX1v45s8TIXPz_!!6000000006118-55-tps-95-28.svg)](https://devs.console.aliyun.com/applications/createtemplate=start-llamaindex) 该应用。\n   \n\u003c/appcenter\u003e\n\u003cdeploy\u003e\n\n\u003c/deploy\u003e\n\n## 案例介绍\n\n\u003cappdetail id=\"flushContent\"\u003e\n\n## 项目架构图\n![架构图](https://img.alicdn.com/imgextra/i2/O1CN01UOBro81tp9aEbfhpn_!!6000000005950-0-tps-2936-1704.jpg)\n\n本案例基于 [LlamaIndex](https://www.llamaindex.ai/) 与阿里云云产品一键拉起 RAG 应用，项目分为**离线知识库向量化**与**在线问答**两个部分：\n- **离线知识库向量化**：离线的知识库分割、向量化、入库过程。\n  - **OfflineEmbedding**: 基于 LlamaIndex 的离线数据处理过程：配置了 OSS 事件触发器，接收 OSS 事件触发请求，当 OSS Bucket 中有 Object 上传时，自动触发离线知识库 embedding 。OfflineEmbedding 负责 **Loading** 存储于 OSS 的知识库文档，对文档进行切分，并 **Indexing** 至向量数据库。\n  - **Embedding**: 文本向量化模型，对切分后的文档进行向量化处理。\n  - **Vectordb**：安装了 Vector 插件的 Postgresql RDS 实例。\n\n- **在线问答**：在线的机器人聊天页面\n  - **WebUI**: 托管的开源 UI 项目 [ChatGPT-Next-Web](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web)，用于聊天的页面展示。\n  - **OnlineProcessor**: 基于 LlamaIndex 的在线数据处理流程：搜索向量数据库、查询 LLM 并返回问题答案\n  - **Embedding**: 文本向量化模型，对用户问题进行向量化处理。注意：在线问答的 Embedding 模型需要与离线知识库向量化使用同一个 Embedding 模型。\n  - **LLM**: 大语言模型，根据检索出的知识库内容，对聊天的问题进行推理和生成。\n\n\n## 项目接入点\n**在线问答访问入口**：`${resources.WebUI.output.customDomain.domainName}`\n\n**离线 OSS 上传知识库入口**：\n- 进入 [OSS 控制台](https://oss.console.aliyun.com/overview)，找到您配置的 OSS bucket，进入您配置文件前缀对应的目录下上传知识库文档即可。\n\n然后，聊天页面可以根据您的知识库进行在线作答了\n\n\u003e 如何在控制台上找到上传知识库的 OSS 地址？\n\n进入名为 **OfflineEmbedding** 的 service，进入调度规则，即可以看到对应的 bucket 和文件前缀，您需要进入前缀对应的目录上传知识库文件。\n例如：bucket 为 `cap-hz`，前缀为 `CAP/0917/rag/llamaindex`，则进入 `cap-hz` bucket  中的  `CAP/0917/rag/llamaindex` 目录中上传文件即可。\n如果 Bucket 下原本没有目录，需要手动创建目录\n![](https://img.alicdn.com/imgextra/i2/O1CN01cBl22E24Vsgn8kIVP_!!6000000007397-0-tps-2304-1006.jpg)\n\n\u003e 如何在控制台找到聊天页面地址？\n找到 **WebUI** 这个 service，找到访问入口，在浏览器中打开即可。\n\n\n## 项目介绍\nRAG（Retrieval-Augmented Generation）应用是一种结合了信息检索（Retrieval）和文本生成（Generation）的人工智能技术。使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型（LLM）用海量数据进行训练，使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上，RAG 将其扩展为能访问特定领域或组织的内部知识库，所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法，让它在各种情境下都能保持相关性、准确性和实用性。\n\n本案例基于 [LlamaIndex](https://www.llamaindex.ai/) 与阿里云云产品一键拉起 RAG 应用，达到的效果是：您通过上传文本文件（.txt/.pdf 格式）到阿里云 OSS，自动触发函数计算对文件进行切分，存储到向量数据库中。当与机器人进行对话时，会自动从知识库中检索相关的信息，机器人根据上下文并在回答中引用这些信息。\n\n\u003c/appdetail\u003e\n\n## 使用流程\n\n\u003cusedetail id=\"flushContent\"\u003e\n\n步骤一：上传知识库到 OSS\n您可以下载 [CAP 简介](https://cap-template.oss-cn-hangzhou.aliyuncs.com/rag/cap_intro.txt\n)的知识库文档，上传到您的 OSS Bucket 的指定目录下\n\n步骤二：打开在线聊天入口，与机器人进行对话问答\n\n步骤三：您可以持续上传您的知识库文档进行测试，如果当前模板不满足您的业务需求，您可以根据二次开发指南对模板进行二次开发。\n\n\n## 二次开发指南\n### 更换模型\n您可以更换 Embedding 模型与 LLM 模型，您可以选择其他的模型在 CAP 上进行托管，您也可以使用模型 API Provider 提供的 API。\n当前模板默认使用的 Embedding 模型是托管的 ModelScope 的 `iic/nlp_corom_sentence-embedding_chinese-base` ，\n使用的 LLM 模型是托管的 Ollama `llama3:8b` \n\n#### 更换 Embedding 模型：\n您需要根据 [LlamaIndex Embedding 文档](https://docs.llamaindex.ai/en/stable/module_guides/models/embeddings/) 更改 `OfflineEmbedding` 服务与 `OnlineProcessor` 的服务代码。\n值得注意的是，不同 Embedding 模型的相似度计算方式不同，向量维度也可能不同，更换 Embedding 模型后需要新建数据库 Table，您需要在 `OfflineEmbedding` 服务与 `OnlineProcessor` 的服务的服务变量中更新 `TableName` 与 `Dimension` 字段。\n\n#### 更换 LLM 模型：\n您需要根据 [LlamaIndex LLM 文档](https://docs.llamaindex.ai/en/stable/module_guides/models/llms/) 更改  `OnlineProcessor` 的服务代码。\n\n\u003e 注意：更换模型后可以删除模板中的 LLM 与 Embedding 服务，或将实例数置为 0，否则会持续产生费用。\n\n### 更改提示词\n您可以在聊天过程中输入提示词。\n模板在问答过程中，使用了默认的提示词，在 `OnlineProcessor` 的 `chat.py` 中，您可以对提示词进行自定义更改。\n\n\n###  更换向量数据库\n您需要根据 [LlamaIndex Vector Stores 文档](https://docs.llamaindex.ai/en/stable/module_guides/storing/vector_stores/) 更改  `OnlineProcessor` 与 `OfflineEmbedding` 的服务代码。\n\n\u003e 注意：更换数据库后可以删除模板中的 VectorDB 服务。\n\n### 自定义开发\n模板部署完成后为您的应用，您可以对目标应用进行定制化的二次开发，使其更适配您的业务。\n模板中 `OnlineProcessor` 与 `OfflineEmbedding` 服务使用的依赖打包在公开的层中，依赖的版本在对应的 `requirements.txt` 内，您可以继续使用 CAP 公开层，也可以自行安装依赖。\n\n## 常见问题\n1. 聊天机器人回答的很慢怎么办？\n\n可以尝试调大实例规格，使用 Ada 规格的实例；可以尝试将实例数量调大；可以尝试更换模型。\n\n2. 聊天机器人总是答非所问怎么办？\n\n更换模型，或者更改提示词\n\n\u003c/usedetail\u003e\n\n## 注意事项\n\n\u003cmatters id=\"flushContent\"\u003e\n\u003c/matters\u003e\n\n\n\u003cdevgroup\u003e\n\n\n## 开发者社区\n\n您如果有关于错误的反馈或者未来的期待，您可以在 [Serverless Devs repo Issues](https://github.com/serverless-devs/serverless-devs/issues) 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态，您可以通过以下渠道进行：\n\n\u003cp align=\"center\"\u003e  \n\n| \u003cimg src=\"https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1635407298906_20211028074819117230.png\" width=\"130px\" \u003e | \u003cimg src=\"https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1635407044136_20211028074404326599.png\" width=\"130px\" \u003e | \u003cimg src=\"https://images.devsapp.cn/fc-faq/33947367.png\" width=\"130px\" \u003e |\n| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |\n| \u003ccenter\u003e微信公众号：`serverless`\u003c/center\u003e                                                                                         | \u003ccenter\u003e微信小助手：`xiaojiangwh`\u003c/center\u003e                                                                                        | \u003ccenter\u003e钉钉交流群：`33947367`\u003c/center\u003e                                                                                           |\n\u003c/p\u003e\n\u003c/devgroup\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevsapp%2Fstart-llamaindex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevsapp%2Fstart-llamaindex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevsapp%2Fstart-llamaindex/lists"}