Chromadb词向量数据库总结

简介

Chroma 词向量数据库是一个用于自然语言处理(NLP)和机器学习的工具,它主要用于词嵌入(word embeddings)。词向量是将单词转换为向量表示的技术,可以捕获单词之间的语义和语法关系,使得计算机能够更好地理解和处理自然语言。

Chroma 词向量数据库的主要功能和用途包括:

  1. 语义表示和相似度计算: 将单词转换为向量表示后,可以计算单词之间的相似度,找到在语义上相关的单词,从而支持词义的推断和理解。

  2. 词语聚类和分类: 使用词向量可以对单词进行聚类或分类,将具有相似含义的单词归为一类,从而帮助组织和理解词汇。

  3. 文本分类和情感分析: 词向量可以作为文本分类和情感分析任务的特征表示,有助于机器学习模型更好地理解文本内容和推断情感倾向。

  4. 推荐系统: 在推荐系统中,词向量可以用于理解用户的偏好和内容的语义,从而提供更准确的推荐。

  5. 语言生成和机器翻译: 词向量在语言生成和机器翻译任务中也有广泛应用,可以帮助模型生成更连贯和语义合理的文本。

Chroma 词向量数据库可能提供多种预训练模型,这些模型可以根据需求进行选择和应用,以支持各种自然语言处理任务。总的来说,它为研究人员和开发者提供了一个有用的工具,使他们能够利用词向量来处理自然语言数据并改善各种NLP任务的性能。

代码实践

安装chromadb

复制代码
pip install chromadb

创建chromadb

python 复制代码
import chromadb
chroma_client = chromadb.Client()

或者, 你想要把数据存放在磁盘上。

python 复制代码
chroma_client = chromadb.PersistentClient(path="data")

创建collection

collection是您存储嵌入、文档以及任何额外元数据的地方。您可以使用名称创建一个collection.

python 复制代码
collection = chroma_client.create_collection(name="my_collection")

或者

python 复制代码
collection = chroma_client.get_or_create_collection(name="my_collection")

改变距离函数,默认是L2

python 复制代码
collection = client.create_collection(
name="collection_name",
metadata={"hnsw:space": "cosine"} # l2 is the default
)
Distance parameter Equation
Squared L2 'l2'
Inner product 'ip'
Cosine similarity 'cosine'

存储embedding, 文本,元数据,和id,

python 复制代码
collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["This is a document", "This is another document"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

根据词嵌入取数据

python 复制代码
results = collection.query(
        query_embeddings=[[1.2, 2.3, 4.5]],
        n_results=2
    )

根据词嵌入和关键字取数据

python 复制代码
results = collection.query(
        query_embeddings=[[1.2, 2.3, 4.5]],
        where_document={"$contains": "another"}
        n_results=2
    )

根据id取数据

python 复制代码
results = collection.get(
        ids=["id1"]
    )

默认Chroma使用hugggingface里的all-MiniLM-L6-v2作为词向量模型。支持以下词向量模型

如果你不想要,直接用你自己的模型,就是在存数据之前调用你的模型把文本转成词向量。

比如我用tensorflowhub里面的。

nnlm | Kaggle

python 复制代码
import tensorflow as tf
import tensorflow_hub as hub

def get_vectors(docs):
    url = "./ml/nnlm_embedding"
    s_embedding = hub.KerasLayer(url, input_shape=[], dtype=tf.string)
    doc_vectors = s_embedding(docs)
    return doc_vectors

参考

🔑 Getting Started | Chroma

相关推荐
程序猿乐锅9 分钟前
【MySQL | 第八篇】MySQL 视图
数据库·mysql
jieyucx1 小时前
SQL 查询终极高阶通鉴:从零基础拆解到工业级多表联查、窗口函数与索引优化
数据库·sql
ai_coder_ai2 小时前
论 NoSQL 数据库技术及其应用
数据库·nosql
AOwhisky3 小时前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算
ytttr8733 小时前
C# 定时数据库备份工具
开发语言·数据库·c#
睡不醒男孩0308233 小时前
自建 Prometheus+Grafana 与 CLUP 深度监控 PG 集群有什么区别?
数据库·oracle
AOwhisky4 小时前
Redis 学习笔记(第四期):高可用与集群(哨兵 + Cluster + 容器化)
linux·运维·数据库·redis·笔记·学习·缓存
猫猫聚会Ing4 小时前
数据库设计 Prompt 提示词 - 构建与迭代
数据库
上海云盾-小余4 小时前
源站隐藏实战:规避裸 IP 被直接攻击的完整方案
数据库·网络协议·tcp/ip
微学AI5 小时前
时序大模型 TimechoAI 赋能工业时序数据底层技术优势与实操
数据库·大模型·时序大模型