如何在Langchain中使用嵌入的Chroma
想要创建由GPT-4o、Claude 3.5 Sonnet、Llama 3.1 405B、Google Gemini Pro等技术驱动的自动化AI代理吗?
那么,您不能错过Anakin AI! 您可以通过无代码工作流程来自动化您的工作流程,为您定制的代理AI!
现在就在这里检查它👇👇
如何在Langchain中使用嵌入式Chroma:全面指南
如何在Langchain中使用嵌入式Chroma:环境设置
要开始使用Langchain中的Chroma和嵌入式,您需要设置您的环境。以下步骤将确保您已准备好执行代码示例。
- 确保您已安装Python:建议使用Python 3.7版本或更高版本。
- 安装所需的包:您需要安装langchain库,chromadb,以及sentence-transformers来管理嵌入和对它们进行操作。您可以使用pip来完成此操作。
- pip 安装 langchain chromadb 句子转换器
- 设置你的IDE或文本编辑器:使用任何文本编辑器或IDE(比如VSCode,PyCharm等)来编写你的代码。
一旦您的环境准备就绪,您就可以开始在Langchain中使用嵌入式Chroma。
如何在Langchain中使用嵌入式结构的Chroma:基本概念
理解嵌入
嵌入是单词或句子的密集向量表示,为机器提供可以理解的数值上下文。在Langchain中,嵌入有助于各种自然语言处理任务,将原始文本转化为有意义的数字数据。
ChromaDB概述
ChromaDB是一个强大的向量数据库,方便存储、检索和管理嵌入。它与Langchain无缝配合,是在查询时使嵌入变得强大而高效的必备工具。
如何在 Langchain 中使用 Chroma 与 Embeddings: 创建并存储 Embeddings
第一步是为您的数据集生成嵌入并使用ChromaDB 存储。以下是逐步实施:
- 导入所需的库:
- 从langchain.embeddings导入SentenceTransformerEmbeddings从langchain.vectorstores导入Chroma从sentence_transformers导入SentenceTransformer
- 设置句子转换器模型:
- 初始化句子转换器模型=句子转换器('全局MiniLM-L6-v2')嵌入=句子转换器嵌入(模型)
- 创建一些示例文本数据:
- 样本文本 texts = ["Langchain 是构建 NLP 应用的优秀框架。", "ChromaDB 允许高效存储向量。", "嵌入将文本转换成数值表示。"]
- 生成并存储嵌入:
- # 为文本创建嵌入向量 vector_embeddings = embeddings.embed_documents(texts) # 初始化Chroma并存储嵌入向量 db = Chroma(embedding_function=embeddings) db.add_documents(texts, vector_embeddings)
以上步骤说明了如何有效地使用Chroma和Langchain创建和存储嵌入。
如何在Langchain中使用Embeddings和Chroma:查询向量存储
一旦您将嵌入存储在 Chroma 中,您可能想要查询它们以找到相关的结果。以下是您可以做到这一点的方法:
- 查询示例:
- # 创建查询文本 query_text = "Langchain 用于什么?" # 为查询创建嵌入 query_embedding = embeddings.embed_query(query_text) # 执行查询 results = db.similarity_search(query_embedding, k=2) print(results)
- 理解输出:输出将根据嵌入相似性提供最接近的匹配文档。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:更新向量存储
随着您的数据集的更新,您可能需要更新您的嵌入。以下是一种方法:
- 添加新文档:
- # 新文件 new_texts = [ "向量数据库像 Chroma 一样正在彻底改变我们管理嵌入的方式。", "学习自然语言处理可以开拓新的职业道路。" ] # 生成嵌入 new_vector_embeddings = embeddings.embed_documents(new_texts) # 将新文件添加到 Chroma 数据库中 db.add_documents(new_texts, new_vector_embeddings)
- 更新现有文件:
# 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 向量存储中删除某些嵌入或文档。以下是如何做的:
- 删除特定文件:
- # 指定要删除的文档索引 db.delete_document(index=1) # 删除第二个文档
- 批量删除:
- 如果您需要删除多个文档,可以这样做:indices_to_delete = [0, 2] # 示例索引 db.delete_documents(indices=indices_to_delete)
如何在Langchain中使用嵌入的Chroma:最佳实践
以下是在使用Chroma和Langchain中嵌入时要牢记的一些最佳实践:
- 定期更新您的嵌入内容:随着您的文本语料库的增长,请确保更新您的嵌入内容。使用讨论过的更新机制。
- 利用元数据进行增强检索:将元数据与您的文档关联可以显著提高您查询的准确性。
- 慎重地索引您的数据:根据检索频率,可能有利于在 Chroma 中创建索引结构以实现高效访问。
- 测试不同的嵌入模型:根据您的使用情况,不同的模型可能会产生更好的结果。尝试使用来自句子嵌入模型的各种模型进行实验。
通过遵循这些最佳实践,您可以在使用Langchain中的嵌入和Chroma时最大化效率。
想要创建由GPT-4o、Claude 3.5 Sonnet、Llama 3.1 405B、Google Geimini Pro等技术驱动的自动化人工智能代理吗?
接下来,您绝对不能错过Anakin AI!您可以使用无代码工作流来自动化您的工作流程,为自定义的代理AI!
现在在这里查看👇👇