当前位置: 首页 > wzjs >正文

网站开发与iso9001关系网优工程师前景和待遇

网站开发与iso9001关系,网优工程师前景和待遇,做网站架构图,web网页界面设计用LlamaIndex写两个完整实用的案例! 实现如何用 MongoIndexStore 实现对话存档和恢复实现“多用户、多对话线程”场景(像一个 ChatGPT 对话列表那样) ✅ 案例一:使用 MongoIndexStore 实现对话存档 恢复 单用户 单对话线程&am…

用LlamaIndex写两个完整实用的案例!

  1. 实现如何用 MongoIndexStore 实现对话存档和恢复
  2. 实现“多用户、多对话线程”场景(像一个 ChatGPT 对话列表那样)

✅ 案例一:使用 MongoIndexStore 实现对话存档 + 恢复

单用户 + 单对话线程,基础功能:能保存、能断点续聊。

🔧 准备工作(安装依赖)

pip install llama-index pymongo

MongoDB 本地连接默认是 mongodb://localhost:27017,你需要保证本地有 MongoDB 或连接远程的 URI。


📦 示例代码(基础对话持久化)

from llama_index.core import VectorStoreIndex, Document
from llama_index.core.storage import StorageContext
from llama_index.core.vector_stores import SimpleVectorStore
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.storage.index_store.mongodb import MongoIndexStore# ==== 用户相关信息 ====
USER_ID = "user_123"             # 可以用于区分不同用户的对话
INDEX_ID = f"chat_{USER_ID}"     # 可以命名多个对话索引# ==== 构造文档 ====
documents = [Document(text="OpenAI 是一家 AI 公司,创建于 2015 年。"),Document(text="ChatGPT 是 OpenAI 推出的产品,使用了 GPT-4 模型。")
]# ==== 创建/恢复 MongoIndexStore ====
mongo_store = MongoIndexStore.from_uri(uri="mongodb://localhost:27017",db_name="llama_chat_db",      # Mongo 数据库名
)# ==== 创建 StorageContext(连接所有存储模块)====
storage_context = StorageContext.from_defaults(vector_store=SimpleVectorStore(),docstore=SimpleDocumentStore(),index_store=mongo_store,
)# ==== 构建索引(注意 index_id 保持一致)====
index = VectorStoreIndex.from_documents(documents,storage_context=storage_context,index_id=INDEX_ID
)# ==== 创建多轮问答引擎 ====
chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)# ==== 进行对话 ====
response1 = chat_engine.chat("ChatGPT 是谁开发的?")
print("Q1:", response1.response)response2 = chat_engine.chat("它是基于哪个模型?")
print("Q2:", response2.response)response3 = chat_engine.chat("那个模型好在哪里?")
print("Q3:", response3.response)# ==== 之后你可以重启脚本,再次用同样 index_id 就能恢复对话 ====

✅ 案例二:支持多用户 + 多对话线程的对话系统(像 ChatGPT 列表页)

我们假设每个用户可以创建多个“会话”(对话线程),每个会话绑定一个 index_id

📦 结构图:

MongoIndexStore
├── user_1
│   ├── chat_001
│   ├── chat_002
├── user_2
│   └── chat_001

🧠 使用场景代码

from llama_index.core import VectorStoreIndex, Document
from llama_index.core.storage import StorageContext
from llama_index.core.vector_stores import SimpleVectorStore
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.storage.index_store.mongodb import MongoIndexStoreclass ChatSessionManager:def __init__(self, mongo_uri: str, db_name: str = "llama_multi_user"):self.mongo_store = MongoIndexStore.from_uri(uri=mongo_uri, db_name=db_name)def start_or_resume_chat(self, user_id: str, session_id: str, documents: list[Document]):index_id = f"{user_id}__{session_id}"storage_context = StorageContext.from_defaults(vector_store=SimpleVectorStore(),docstore=SimpleDocumentStore(),index_store=self.mongo_store,)index = VectorStoreIndex.from_documents(documents,storage_context=storage_context,index_id=index_id)return index.as_chat_engine(chat_mode="condense_question", verbose=True)# ==== 示例 ====
chat_manager = ChatSessionManager("mongodb://localhost:27017")user_id = "alice"
session_id = "session_001"documents = [Document(text="Python 是一种流行的编程语言。"),Document(text="Flask 是一个基于 Python 的 Web 框架。")
]# 创建或恢复会话
chat_engine = chat_manager.start_or_resume_chat(user_id, session_id, documents)# 聊天示例
res1 = chat_engine.chat("Flask 是干什么的?")
print("A1:", res1.response)res2 = chat_engine.chat("它是用什么语言写的?")
print("A2:", res2.response)# 下次只要保持 user_id 和 session_id 不变,就能继续这个会话

✅ 多会话系统的设计建议

模块功能
MongoIndexStore存储所有对话索引
index_id使用 user_id + session_id 组合,做到多用户+多对话隔离
StorageContext每个 session 创建一次,绑定三个 store
chat_engine每次使用都从正确的 index_id 创建

这里多解释

user_id 和 session_id分别是什么,为什么要两个

🧠 简单说:

  • user_id用户的唯一标识,比如你是张三,我是李四,后台就要知道“是谁在发消息”。
  • session_id这个用户的某一次对话的编号,比如你今天聊的是“贷款业务问题”,明天聊的是“转账失败问题”,每次对话是一个“会话”。

📌 举个生活例子:

你打开 ChatGPT,左边是不是有很多聊天记录?

  • 你是唯一的一个用户 —— 这就是 user_id
  • 左边每一个聊天记录,就是一次 session —— 它们各自有不同的 session_id

比如:

user_id = "alice"
session_id = "2024_贷款问题"user_id = "alice"
session_id = "2024_发票问题"user_id = "bob"
session_id = "2024_融资问题"

🚀 系统设计上的作用:

✅ 为什么不能只有 user_id?

  • 因为一个用户可能开启多个聊天,不能所有历史记录都堆在一起。

✅ 为什么不能只有 session_id?

  • 因为会有多个用户,比如张三和李四可能都创建了 session_id="2024_chat",那系统无法区分是谁的聊天。

✅ 两个一起用,能确保:

index_id = f"{user_id}__{session_id}"
  • 绝对唯一,支持多用户 + 多会话
  • 你下次恢复对话,只要传入这两个就能找回上下文

🧩 你开发系统的时候,这样设计会有什么优势?

场景好处
同一用户多个对话用户体验好,可以“分主题聊”
多用户使用系统数据隔离安全,用户互不干扰
MongoDB 查询可以用复合主键高效索引 {"user_id": ..., "session_id": ...}
断点续聊一键恢复之前的上下文

✅ 总结

参数作用举例
user_id谁在发消息"alice"
session_id哪一场对话"invoice_202404"
index_id唯一标识这场聊天"alice__invoice_202404"
http://www.dtcms.com/wzjs/411884.html

相关文章:

  • 唐山建设集团下岗职工网站网络广告的形式
  • 做网站做得好的公司有哪些中国企业500强最新排名
  • 西安搬家公司收费seo排名软件
  • 做网站的的人收入多少钱网上培训机构
  • 关于校园网站设计的毕业论文google关键词优化
  • 用java做直播网站谷歌关键词搜索工具
  • 手表网站错误怎么办巩义网络推广外包
  • 婚礼策划方案seo优化工具软件
  • 网址导航类网站怎么做店铺引流的30种方法
  • 福州做网站互联网公司排名网络营销推广主要做什么?
  • 深圳电商网站开发公司上海比较好的seo公司
  • 如何用word做简单的网站贵阳seo网站推广
  • wordpress 动态背景网站如何做关键词优化
  • 网站开发怎么做到前后端seo点击排名软件哪家好
  • 提供企业门户网站建设郑州seo线上推广技术
  • 吉林长春有做网站的吗公司网站推广技巧
  • 网站服务器技术app软件下载站seo教程
  • 网站怎么做用qq登录接入网站优化排名公司哪家好
  • 建应用网站百度推广非企代理
  • flash做网站的论文上海今天刚刚发生的新闻
  • 贵港网站建设公司百度平台商家客服
  • wordpress 代码插件seo代码优化步骤
  • 青羊建站报价免费个人主页网站
  • 动漫制作公司排名优化关键词排名哪家好
  • 做代购网站有哪些东西吗网站seo外包价格
  • wordpress 苗木 主题悟空建站seo服务
  • 个人网站优秀作品个人怎么注册自己的网站
  • 网页设计表单制作代码整站优化要多少钱
  • 建站之星安装教程搜索百度一下
  • 网站建设期末总结全球网站排名