【Dify知识库】:可能是全网首发!将开源知识库Dify的数据库从Postgresdb切换成MySQL,解决各种兼容的问题,最终可以成功切换,做了很多期视频进行演示,持续研究中

这篇具有很好参考价值的文章主要介绍了【Dify知识库】:可能是全网首发!将开源知识库Dify的数据库从Postgresdb切换成MySQL,解决各种兼容的问题,最终可以成功切换,做了很多期视频进行演示,持续研究中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,视频演示地址:

https://www.bilibili.com/video/BV1ni4y1Y7q2/

【Dify知识库】(4):可能是全网首发!Dify知识库魔改Postgres数据库成MySQL数据库,切换数据库连接成功!注册失败,需要继续修改代码。

2,过程是复杂的,整理好的项目地址,开源在这里

可以直接下载运行了:
https://gitee.com/fly-llm/dify-mysql-llm

3,思路因为使用的是ORM框架 sqlalchemy,修改一些uuid生成后就行

python3学习:
https://www.runoob.com/python3/python3-tutorial.html
官方网:
https://www.sqlalchemy.org/
别人总结的:
https://wiki.masantu.com/sqlalchemy-tutorial/

支持切换数据库,具体操作:

date(DATE_TRUNC('day', m.created_at AT TIME ZONE 'UTC' AT TIME ZONE :tz )) AS date, 

替换成 

date(created_at) AS date,
import uuid
数据库替换:
id = db.Column(UUID, primary_key=True, default=lambda: uuid.uuid4())

arg_dict = {'tz': account.timezone, 'app_id': app_model.id}
删除:{'tz': account.timezone, 

数据库变成:
`id` varchar(255) NOT NULL PRIMARY KEY,

增加库:mysqlclient==2.2.1

4,解决 mysql 数据库插入二进制问题

因为对数据进行序列化导致插入数据问题。

    raise sa_exc.PendingRollbackError(
sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb.OperationalError) (1366, "Incorrect string value: '\\x80\\x05\\x95\\x07$\\x00...' for column 'embedding' at row 1")
[SQL: INSERT INTO embeddings (id, model_name, hash, embedding) VALUES (%s, %s, %s, %s)]
[parameters: (UUID('a4a5dc14-6a5d-4ef7-a6bd-c450a6f5dfa8'), 'text_embedding', '146c895b7f57661d6189865c50991146361cbec9ef83ba010cf08ff36543ec75', b'\x80\x05\x95\x07$\x00\x00\x00\x00\x00\x00]\x94(G\xbf`V\xcbe&\x9f\xdfG?\xa42\xb8\xac\x96RHG?\x92m\xff\x85\x92\xa75G\xbf\x9b*\xda\x80\xf5\xa2gG?\xa3\x ... (24302 characters truncated) ... cZ\x18G\xbfW1i\xd5\xd5\x12\xaeG\xbf\x921\xf2\xfa\xca\x18uG\xbf{-4\x05}\x1bcG?{\xe15\x1e\x13\x9b\x92G?\x90:K\x87"H\x98G\xbf\x8a\xceS\x9d\x94\xcf\x85e.')]

解决worker 问题,修改文件:dify-mysql-docker-compose/dify-api/models/dataset.py
替换 pickle.loads 成 json.dumps

字段不使用二进制
embedding = db.Column(db.LargeBinary, nullable=False)
替换成
embedding = db.Column(db.Text, nullable=False)


    # 解决数据库插入二进制问题。直接使用 json 字符串即可。
    def set_embedding(self, embedding_data: list[float]):
        #self.embedding =  (embedding_data, protocol=pickle.HIGHEST_PROTOCOL)
        self.embedding = json.dumps(normalized_embedding)

    def get_embedding(self) -> list[float]:
        #return pickle.loads(self.embedding)
        return json.loads(self.embedding)

执行成功:

[2023-12-28 14:40:07,333: DEBUG/MainProcess] Prefix dict has been built successfully.
[2023-12-28 14:40:07,387: INFO/MainProcess] Processed dataset: b76e1340-0fb3-4c49-aeff-77ecfaba74c3 latency: 4.993560075992718
[2023-12-28 14:40:07,395: INFO/MainProcess] Task tasks.document_indexing_task.document_indexing_task[4c398a51-da4b-483f-8ca8-fa008950a352] succeeded in 5.001808531000279s: None

dify知识库怎么用,chatgpt,大模型,知识库系统,数据库,开源,mysql

https://gitee.com/fly-llm/dify-mysql-llm/commit/d37317cff5eceaa5aa2d1e7aa8657fa228d4959e
放开一些接口限制解决报错的问题:
dify知识库怎么用,chatgpt,大模型,知识库系统,数据库,开源,mysql
删除了 dify-mysql-docker-compose/dify-api/migrations/versions/ 下面的文件,其实都是兼容升级操作。
因为是直接创建 MySQL的版本,不牵扯到升级,兼容。

5,提交时候,遇到 gitee 在上线记录下

dify知识库怎么用,chatgpt,大模型,知识库系统,数据库,开源,mysql

6,总结

Dify 项目非常不错,代码写的也好,就是数据库是 Postgresdb 的,需要切换成Mysql。
不过还好使用的是 sqlAlchomy 切换起来也是非常的方便的。文章来源地址https://www.toymoban.com/news/detail-856819.html

到了这里,关于【Dify知识库】:可能是全网首发!将开源知识库Dify的数据库从Postgresdb切换成MySQL,解决各种兼容的问题,最终可以成功切换,做了很多期视频进行演示,持续研究中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LangChain-Chatchat 开源知识库来了

    LangChain-Chatchat 是基于 ChatGLM 等大语言模型与 LangChain 等应用框架实现,开源、可离线部署的 RAG 检索增强生成大模型知识库项目。最新版本为 v0.2.10,目前已收获 26.7k Stars,非常不错的一个开源知识库项目。 项目地址:https://github.com/chatchat-space/Langchain-Chatchat 顾名思义,LangC

    2024年04月17日
    浏览(33)
  • 开源知识库平台Raneto--使用Docker部署Raneto

    1.1 Raneto简介 Raneto是一个免费、开放、简单的 Markdown 支持的 Node.js 知识库。 1.2 知识库介绍 知识库 知识库是指存储和组织知识的系统或库,它包括了各种类型的信息和知识,如文本、图像、音频、视频等。知识库可以用于存储和检索知识,帮助人们获取特定领域的知识和解决

    2024年04月12日
    浏览(30)
  • 开源知识库软件xwiki在Windows下的安装

    xwiki是java语言开发的开源知识库 开源知识库软件-xwiki在windows下的安装:基本参考这个安装即可。 XWiKi 部分汉化 1.1、Windows版本及系统配置 Windows10专业版,32GB内存 1.2、JDK11安装 1、xwiki15版本要求至少JDK11。 2、到oracle官网系在JDK11安装。 3、Java11安装以后在Windows的环境变量里配

    2024年02月04日
    浏览(29)
  • BookStack开源免费知识库docker-compose部署

            BookStack(书栈)是一个功能强大且易于使用的开源知识管理平台,适用于个人、团队或企业的文档协作和知识共享。 简单易用 :BookStack提供了一个直观的用户界面,使用户能够轻松创建、编辑和组织文档 多层级结构 :文档可以以多层级的方式组织,方便用户创

    2024年02月10日
    浏览(26)
  • 从LangChain+LLM的本地知识库问答到LLM与知识图谱、数据库的结合

    过去半年,随着ChatGPT的火爆,直接带火了整个LLM这个方向,然LLM毕竟更多是基于过去的经验数据预训练而来,没法获取最新的知识,以及各企业私有的知识 为了获取最新的知识,ChatGPT plus版集成了bing搜索的功能,有的模型则会调用一个定位于 “链接各种AI模型、工具”的

    2024年02月12日
    浏览(53)
  • 基于Langchain+向量数据库+ChatGPT构建企业级知识库

    ▼最近直播超级多, 预约 保你有收获 近期直播: 《 基于 LLM 大模型的向量数据库企业级应用实践 》  1 — LangChain 是什么? 众所周知 OpenAI 的 API 无法联网的,所以如果只使用自己的功能实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能肯定

    2024年02月06日
    浏览(44)
  • AnythingLLM:基于RAG方案构专属私有知识库(开源|高效|可定制)

    继OpenAI和Google的产品发布会之后,大模型的能力进化速度之快令人惊叹,然而,对于很多个人和企业而言,为了数据安全不得不考虑私有化部署方案,从GPT-4发布以来,国内外的大模型就拉开了很明显的差距,能够实现的此路径无非就只剩下国内的开源大模型可以选择了。而

    2024年02月04日
    浏览(47)
  • Quivr 基于GPT和开源LLMs构建本地知识库 (更新篇)

    自从大模型被炒的越来越火之后,似乎国内涌现出很多希望基于大模型构建本地知识库的需求,大概在5月底的时候,当时Quivr发布了第一个0.0.1版本,第一个版本仅仅只是使用LangChain技术结合OpenAI的GPT模型实现了一个最基本的架子,功能并不够完善,但可以研究研究思路,当

    2024年02月12日
    浏览(35)
  • 【大模型知识库】(2):开源大模型+知识库方案,docker-compose部署本地知识库和大模型,毕昇+fastchat的ChatGLM3,BGE-zh模型,通过拖拽/配置方式实现大模型编程

    https://www.bilibili.com/video/BV1xi4y1e7MD/ 【大模型知识库】(2):开源大模型+知识库方案,docker-compose部署本地知识库和大模型,毕昇+fastchat的ChatGLM3,BGE-zh模型 Bisheng是一款领先的开源大模型应用开发平台,赋能和加速大模型应用开发落地,帮助用户以最佳体验进入下一代应用开

    2024年02月04日
    浏览(73)
  • 如何搭建开源知识库软件AFFiNE并实现公网环境远程协作【内网穿透】

    了解如何使用Docker安装AFFiNE,结合cpolar内网穿透工具实现公网远程访问。AFFiNE是一个全能知识库工具,帮助用户集中存储、管理会议记录、待办事项、文档等工作流程。

    2024年01月24日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包