如何在Langchain中使用嵌入的Chroma

how to use chroma with embeddings in langchain

想要创建由GPT-4o、Claude 3.5 Sonnet、Llama 3.1 405B、Google Gemini Pro等技术驱动的自动化AI代理吗?

那么,您不能错过Anakin AI! 您可以通过无代码工作流程来自动化您的工作流程,为您定制的代理AI!

现在就在这里检查它👇👇

如何在Langchain中使用嵌入式Chroma:全面指南

如何在Langchain中使用嵌入式Chroma:环境设置

要开始使用Langchain中的Chroma和嵌入式,您需要设置您的环境。以下步骤将确保您已准备好执行代码示例。

  1. 确保您已安装Python:建议使用Python 3.7版本或更高版本。
  2. 安装所需的包:您需要安装langchain库,chromadb,以及sentence-transformers来管理嵌入和对它们进行操作。您可以使用pip来完成此操作。
  3. pip 安装 langchain chromadb 句子转换器
  4. 设置你的IDE或文本编辑器:使用任何文本编辑器或IDE(比如VSCode,PyCharm等)来编写你的代码。

一旦您的环境准备就绪,您就可以开始在Langchain中使用嵌入式Chroma。

如何在Langchain中使用嵌入式结构的Chroma:基本概念

理解嵌入

嵌入是单词或句子的密集向量表示,为机器提供可以理解的数值上下文。在Langchain中,嵌入有助于各种自然语言处理任务,将原始文本转化为有意义的数字数据。

ChromaDB概述

ChromaDB是一个强大的向量数据库,方便存储、检索和管理嵌入。它与Langchain无缝配合,是在查询时使嵌入变得强大而高效的必备工具。

如何在 Langchain 中使用 Chroma 与 Embeddings: 创建并存储 Embeddings

第一步是为您的数据集生成嵌入并使用ChromaDB 存储。以下是逐步实施:

  1. 导入所需的库:
  2. 从langchain.embeddings导入SentenceTransformerEmbeddings从langchain.vectorstores导入Chroma从sentence_transformers导入SentenceTransformer
  3. 设置句子转换器模型:
  4. 初始化句子转换器模型=句子转换器('全局MiniLM-L6-v2')嵌入=句子转换器嵌入(模型)
  5. 创建一些示例文本数据:
  6. 样本文本 texts = ["Langchain 是构建 NLP 应用的优秀框架。", "ChromaDB 允许高效存储向量。", "嵌入将文本转换成数值表示。"]
  7. 生成并存储嵌入:
  8. # 为文本创建嵌入向量 vector_embeddings = embeddings.embed_documents(texts) # 初始化Chroma并存储嵌入向量 db = Chroma(embedding_function=embeddings) db.add_documents(texts, vector_embeddings)

以上步骤说明了如何有效地使用Chroma和Langchain创建和存储嵌入。

如何在Langchain中使用Embeddings和Chroma:查询向量存储

一旦您将嵌入存储在 Chroma 中,您可能想要查询它们以找到相关的结果。以下是您可以做到这一点的方法:

  1. 查询示例:
  2. # 创建查询文本 query_text = "Langchain 用于什么?" # 为查询创建嵌入 query_embedding = embeddings.embed_query(query_text) # 执行查询 results = db.similarity_search(query_embedding, k=2) print(results)
  3. 理解输出:输出将根据嵌入相似性提供最接近的匹配文档。k参数指定要检索多少结果。

如何在Langchain中使用嵌入来使用Chroma:高级查询技术

为了增强您的查询能力,请考虑实现高级技术:

过滤结果

你可以根据某些条件筛选结果,以提高你的查询的准确性。

# Assuming you have some additional metadata associated with the texts, like categories
metadata = [
{"category": "NLP"},
{"category": "Database"},
{"category": "NLP"}
]

# Add documents with metadata
db.add_documents(texts, vector_embeddings, metadata)

# Query with filter
results = db.similarity_search(query_embedding, k=2, filter={'category': 'NLP'})
print(results)

获取不同的结果

在查询大型数据集时,您可能希望有不同的主题。

# Assuming you want distinct categories
distinct_results = db.similarity_search(query_embedding, k=5, distinct='category')
print(distinct_results)

如何在Langchain中使用嵌入式的Chroma:更新向量存储

随着您的数据集的更新,您可能需要更新您的嵌入。以下是一种方法:

  1. 添加新文档:
  2. # 新文件 new_texts = [ "向量数据库像 Chroma 一样正在彻底改变我们管理嵌入的方式。", "学习自然语言处理可以开拓新的职业道路。" ] # 生成嵌入 new_vector_embeddings = embeddings.embed_documents(new_texts) # 将新文件添加到 Chroma 数据库中 db.add_documents(new_texts, new_vector_embeddings)
  3. 更新现有文件:
  4. # Updating an existing document
    updated_text = "Langchain supports various functionalities for NLP applications."
    # Update the specific document's text
    db.update_document(old_index=0, new_text=updated_text) # Assuming index of the document you want to update

如何在Langchain中使用嵌入式的Chroma:从向量存储中删除

有时候,您可能希望从您的 Chroma 向量存储中删除某些嵌入或文档。以下是如何做的:

  1. 删除特定文件:
  2. # 指定要删除的文档索引 db.delete_document(index=1) # 删除第二个文档
  3. 批量删除:
  4. 如果您需要删除多个文档,可以这样做:indices_to_delete = [0, 2] # 示例索引 db.delete_documents(indices=indices_to_delete)

如何在Langchain中使用嵌入的Chroma:最佳实践

以下是在使用Chroma和Langchain中嵌入时要牢记的一些最佳实践:

  1. 定期更新您的嵌入内容:随着您的文本语料库的增长,请确保更新您的嵌入内容。使用讨论过的更新机制。
  2. 利用元数据进行增强检索:将元数据与您的文档关联可以显著提高您查询的准确性。
  3. 慎重地索引您的数据:根据检索频率,可能有利于在 Chroma 中创建索引结构以实现高效访问。
  4. 测试不同的嵌入模型:根据您的使用情况,不同的模型可能会产生更好的结果。尝试使用来自句子嵌入模型的各种模型进行实验。

通过遵循这些最佳实践,您可以在使用Langchain中的嵌入和Chroma时最大化效率。

想要创建由GPT-4o、Claude 3.5 Sonnet、Llama 3.1 405B、Google Geimini Pro等技术驱动的自动化人工智能代理吗?

接下来,您绝对不能错过Anakin AI!您可以使用无代码工作流来自动化您的工作流程,为自定义的代理AI!

现在在这里查看👇👇

2024-09-02 04:21:27 AI中文站翻译自原文