前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式ClickHouse来袭,Python+CH无缝结合打开新世界

嵌入式ClickHouse来袭,Python+CH无缝结合打开新世界

作者头像
Nauu
发布2023-09-13 19:57:56
5390
发布2023-09-13 19:57:56
举报

嵌入式数据库一直以来都是个场景丰富、不容小视的细分领域,不知道大家是否关注过DuckDB,它一直以 OLAP 版的 SQLite 著称,能满足嵌入式场景的高性能 OLAP 查询。

虽然 ClickHouse-Local 很轻量,但是站在应用程序的视角,与其交互还是 Server - Client 的逻辑。有没有更嵌入式一点的解决方案呢?

刚好最近我在选型一款嵌入式OLAP数据库,发现了chDB 这样一款嵌入式数据库。

用一句话形容它就是:魔改了 ClickHosue 的代码,将核心引擎部分剥离出来作为 Python 的模块,实现在 Python 中即插即用。从官网引用的chDB架构图如下,项目地址见文末:

chDB 可以作为 Python 的一个模块 import 引入,无缝使用,不需要安装任何依赖,可以直接 python 中通过 chDB 查询文件乃至 pandas 的 DataFrame。

有了这个基础,接下来我就利用 chDB 重构上篇公众号 Pyhton 和 ClickHouse 的例子

这次可以更直接,ClickHouse都不用装了, 直接在Python中自闭环搞定。

在之前代码的基础上,将 ClickHouse 的环境、客户端声明统统去掉,只用引入 chdb 模块即可。

用于搜索的向量数据是头条的新闻标题,已经按照 parquet 格式存入文件,直接使用 chdb 查询即可:

代码语言:javascript
复制
#导入chdb模块
import chdb

def query(d):

    sql = 'SELECT category,title,L2Distance(CAST(embedding,\'Array(Float64)\'),{embeddings}) AS score FROM ' \
          'file("../../data/toutiao_cat_data_all_with_embeddings.parquet", Parquet) ' \
          'ORDER BY score ASC LIMIT 5'\
        .format(embeddings=d)
    res = chdb.query(sql, 'Dataframe')
  
    return res
    
q = ""
while q != 'quit':
    q = input("请提问: ")
    if q!="quit":

        data = openai.Embedding.create(input=q, engine=embedding_model).data[0]["embedding"]
        df = query(data)
        for idx, row in df.iterrows():
            print(idx,  row["score"],row["category"],row["title"].decode('utf8'))

最后看看效果,好像还不赖:

在不引入额外依赖的情况,嵌入式ClickhHouse 在 Python 中的应用,真的可以带来很大的想象空间,赶快去试试吧,最后放上 chdb 的项目地址https://github.com/chdb-io/chdb

好了,今天就到这里。原创不易,如果这篇文章对你有帮助,欢迎 点赞、转发、在看 三连击

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

本文分享自 ClickHouse的秘密基地 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档