首页 > 其他分享 >使用 Chroma 启动你的向量存储

使用 Chroma 启动你的向量存储

时间:2025-01-11 15:03:40浏览次数:3  
标签:存储 Chroma langchain 文档 import 向量

1. 技术背景介绍

Chroma 是一个专注于开发者生产力和幸福感的 AI 原生开源向量数据库。它是 Apache 2.0 许可的,并且无缝集成了 LangChain,使得大规模文本处理和检索变得简单高效。无论是简单的文本嵌入还是复杂的检索任务,Chroma 都能轻松应对。本篇文章将带您从安装到高级使用,逐步了解如何利用 Chroma 启动并管理您的向量存储。

2. 核心原理解析

Chroma 的设计核心是向量化存储,它允许将文本数据转换为向量表示,以便更高效地进行相似性搜索和文档检索。通过与嵌入模型(如 OpenAI 和 HuggingFace)集成,Chroma 能够快速处理和存储大规模文本数据。我们将在本教程中演示如何初始化和管理 Chroma 向量存储,从而充分利用其强大的搜索能力。

3. 代码实现演示

安装和初始化

首先,您需要安装 LangChain 和 Chroma 的集成包:

pip install -qU "langchain-chroma>=0.1.2"
pip install -qU langchain-openai
pip install -qU langchain-huggingface
pip install -qU langchain-core

然后,我们可以初始化 Chroma 向量存储。以下是使用 OpenAI 和 HuggingFace 嵌入模型进行初始化的示例:

import os
import getpass
from langchain_openai import OpenAIEmbeddings
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_chroma import Chroma

# 使用 OpenAI 嵌入模型
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key:")
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")

# 使用 HuggingFace 嵌入模型
embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")

vector_store = Chroma(
    collection_name="example_collection",
    embedding_function=embeddings,
    persist_directory="./chroma_langchain_db",  # 本地保存数据位置
)

管理向量存储

添加文档
from langchain_core.documents import Document
from uuid import uuid4

# 创建文档示例
documents = [
    Document(page_content="Building an exciting new project with LangChain - come check it out!", metadata={"source": "tweet"}, id=1),
    Document(page_content="Robbers broke into the city bank and stole $1 million in cash.", metadata={"source": "news"}, id=2),
    # 添加更多文档...
]

# 生成 UUID 并添加到向量存储中
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
更新文档
# 更新现有文档
updated_document = Document(
    page_content="I had chocolate chip pancakes and fried eggs for breakfast this morning.",
    metadata={"source": "tweet"},
    id=1,
)
vector_store.update_document(document_id=uuids[0], document=updated_document)
删除文档
# 删除特定文档
vector_store.delete(ids=uuids[-1])

查询向量存储

相似性搜索
# 执行相似性搜索
results = vector_store.similarity_search(
    "LangChain provides abstractions to make working with LLMs easy",
    k=2,
    filter={"source": "tweet"},
)
for res in results:
    print(f"* {res.page_content} [{res.metadata}]")

4. 应用场景分析

Chroma 的向量存储适用于各种大规模文本处理任务,例如问答系统、推荐系统及搜索引擎优化等场景。通过将文本数据转化为向量形式,可以快速有效地进行相似性匹配和信息检索,极大提升应用的智能程度和响应速度。

5. 实践建议

  • 合理选择嵌入模型:根据实际需求选择合适的嵌入模型,以平衡性能和精度。
  • 定期更新和管理数据:确保向量存储中的数据是最新的,以提高检索结果的相关性。
  • 利用高级搜索功能:尝试不同的搜索策略(如 MMR 搜索),以优化检索效果。

如果遇到问题欢迎在评论区交流。
—END—

标签:存储,Chroma,langchain,文档,import,向量
From: https://blog.csdn.net/xfbxcgncv/article/details/145015990

相关文章

  • 计算机如何存储浮点数(1)
    在C语言中,浮点型数据分为:单精度(float),双精度(double)float占4字节(32bit);double占8字节(64bit);无论是单精度或双精度的浮点数储都存分为三部分: 符号位(S):S可以为0或1,用来储存浮点数的正负值; 指数位(E):科学计数法后的指数部分; 尾数部分(M):移位存储的位数部分;注意:一个进制浮点数V......
  • C# 两大线程本地存储解决方案:ThreadStatic 与 ThreadLocal
    C#两大线程本地存储解决方案:ThreadStatic与ThreadLocal一、线程本地存储在C#中,static关键字定义的变量,其作用域是在应用程序域(AppDomain)内共享的。因此,在多线程操作时,对同一个静态变量进行操作可能会导致并发问题,如锁竞争等。这种情况下,我们需要一种机制,使某些变量对每个......
  • linux通过配置软链接修改文件默认存储路径
    前提有时候通过集群安装的docker之类的软件是不方便修改docker的默认存储路径的,使用时间长了后会占用服务器根目录磁盘,默认位置是/var/lib/docker/,这种情况可以在安装docker之前配置。比如执行这条命令可以将默认的docker存储路径实际放到/data/docker/下ln-s/data/docker/v......
  • 局部变量是存储在寄存器吗
    局部变量并不一定存储在寄存器中。局部变量通常存储在栈上,但编译器可以根据优化级别和具体情况决定是否将某些局部变量放入寄存器中。以下是一些详细信息:1.局部变量存储位置栈:局部变量通常在函数调用时分配在栈上。栈是一个后进先出(LIFO)的数据结构,用于存储函数的局部变量、返......
  • mysql查询表注释、字段、备注、大小、存储过程
    查询字段注释查询表注释字段注释SELECTa.TABLE_SCHEMA库名,a.table_name表名,a.table_comment表说明,b.COLUMN_NAME字段名,b.column_comment字段说明,b.column_type字段类型,b.column_key约束FROMinformation_schema.TABLESaLEFTJOINinformation_schema.COLUMNSb......
  • 存储引擎-1
    简介相当于Linux文件系统,只不过比文件系统强大功能数据读写数据安全和一致性提高性能热备份自动故障恢复高可用方面支持查看存储引擎showengines;常见存储引擎:InnoDB、MyISAM、MEMORY、CSVMySQL5.7默认的存储引擎:InnoDBPerconaDB默认是:XtraDBMariaDB默认是:Inn......
  • sql存储过程和用户定义函数 (UDF) 的具体实操
    存储过程和用户定义函数(UDF)的具体实操为了提供更具体的实操指导,创建一个实际的数据库环境,并在此基础上编写和测试存储过程与用户定义函数(UDF)。使用MySQL作为示例数据库管理系统(DBMS),但这些概念和大部分代码可以适用于其他SQL兼容的DBMS,如PostgreSQL、SQLServer等。环......
  • 如何把电脑上文件云存储,把电脑上文件云存储的方法
    怎么把电脑上的文件云存储呢?在私有云存储中,设置文件自动同步是最简单的方法。在私有云环境中进行文件同步备份是确保数据安全、便捷访问和管理的重要手段。通过将文件同步到私有云服务器,用户可以在多个设备间实时同步文件,同时确保备份的数据不会丢失。下面是如何在私有云电脑上实......
  • 在使用 PbootCMS 的 IP 黑名单功能时,如果发现只能添加 10 多条 IP 地址,多了保存不了,通
    1.备份数据库在进行任何数据库操作之前,请务必备份数据库,以防数据丢失。mysqldump-uyour_username-pyour_database_name>backup.sql2.登录数据库管理工具使用phpMyAdmin或其他数据库管理工具登录到您的MySQL数据库。3.修改 ay_config 表结构找到 ay_conf......
  • 向量空间 Vector Spaces
    向量空间VectorSpaces​ 在GilbertStrang教授的书中,提到了导数的转置(TheTransposeofaDerivative)。在正式的向量空间内容之前,可以先了解一下导数与矩阵转置的联系。​ 考虑将矩阵看做一个运算符(或者说,算子),对于函数\(x(t)\)的线性代数。假设\(\symbfit{A}=\mathrm{d}/\mat......