概述
本概述涵盖基于文本的嵌入模型。LangChain 目前不支持多模态嵌入。
工作原理
- 向量化 —— 该模型将每个输入字符串编码为一个高维向量。
- 相似度评分 —— 使用数学指标对向量进行比较,以衡量底层文本的关联程度。
相似度指标
通常使用几种指标来比较嵌入:- 余弦相似度 — 衡量两个向量之间的夹角。
- 欧几里得距离 — 衡量点之间的直线距离。
- 点积 — 衡量一个向量在另一个向量上的投影程度。
接口
LangChain 通过 Embeddings 接口,为文本嵌入模型(例如 OpenAI、Cohere、Hugging Face)提供了标准接口。 有两种主要方法:embed_documents(texts: List[str]) → List[List[float]]: 嵌入文档列表。embed_query(text: str) → List[float]: 嵌入单个查询。
该接口允许使用不同的策略对查询和文档进行嵌入,尽管实际上大多数提供商以相同的方式处理它们。
主要集成
缓存
嵌入可以被存储或临时缓存,以避免需要重新计算它们。 可以使用CacheBackedEmbeddings 来缓存嵌入。该包装器将嵌入存储在键值存储中,其中文本会被哈希,哈希值则用作缓存中的键。
初始化 CacheBackedEmbeddings 的主要支持方法是 from_bytes_store。它接受以下参数:
underlying_embedder: 用于嵌入的嵌入器。document_embedding_cache: 用于缓存文档嵌入的任何ByteStore。batch_size: (可选,默认为None) 两次存储更新之间要嵌入的文档数量。namespace: (可选,默认为"") 用于文档缓存的命名空间。有助于避免冲突(例如,将其设置为嵌入模型名称)。query_embedding_cache: (可选,默认为None) 用于缓存查询嵌入的ByteStore,或使用True来复用与document_embedding_cache相同的存储。
所有嵌入模型
Aleph Alpha
Anyscale
Ascend
AI/ML API
AwaDB
AzureOpenAI
Baichuan Text Embeddings
Baidu Qianfan
Baseten
Bedrock
BGE on Hugging Face
Bookend AI
Clarifai
Cloudflare Workers AI
Clova Embeddings
Cohere
DashScope
Databricks
DeepInfra
EDEN AI
Elasticsearch
Embaas
Fake Embeddings
FastEmbed by Qdrant
Fireworks
Google Gemini
Google Vertex AI
GPT4All
Gradient
GreenNode
Hugging Face
IBM watsonx.ai
Infinity
Instruct Embeddings
IPEX-LLM CPU
IPEX-LLM GPU
Intel Extension for Transformers
Jina
John Snow Labs
LASER
Lindorm
Llama.cpp
LLMRails
LocalAI
MiniMax
MistralAI
Model2Vec
ModelScope
MosaicML
Naver
Nebius
Netmind
NLP Cloud
Nomic
NVIDIA NIMs
Oracle Cloud Infrastructure
Ollama
OpenClip
OpenAI
OpenVINO
Optimum Intel
Oracle AI Vector Search
OVHcloud
Pinecone Embeddings
PredictionGuard
PremAI
SageMaker
SambaNovaCloud
SambaStudio
Self Hosted
Sentence Transformers
Solar
SpaCy
SparkLLM
TensorFlow Hub
Text Embeddings Inference
TextEmbed
Titan Takeoff
Together AI
Upstage
Volc Engine
Voyage AI
Xinference
YandexGPT
ZhipuAI
LangGraph 智能体
本指南将帮助你开始使用 LangGraph 构建智能体。我们将涵盖基础知识,然后展示如何使用 LangGraph 构建一个简单的智能体。什么是智能体?
智能体是一个使用大型语言模型(LLM)来决定采取什么行动的系统。智能体可以访问工具,并可以使用这些工具来执行任务。智能体还可以访问记忆,并可以使用这些记忆来记住过去的交互。LangGraph 智能体
LangGraph 是一个用于构建有状态、多参与者应用程序的库,它使用 LLM 来协调。LangGraph 智能体是 LangGraph 应用程序的一种,它使用 LLM 来决定采取什么行动。 LangGraph 智能体是构建智能体的强大方式,因为它们允许你:- 定义自定义状态:你可以定义智能体的状态,以及状态如何随时间变化。
- 定义自定义逻辑:你可以定义智能体如何决定采取什么行动。
- 定义自定义工具:你可以定义智能体可以使用的工具。
- 定义自定义记忆:你可以定义智能体如何记住过去的交互。
构建一个简单的智能体
让我们构建一个简单的智能体,它可以访问一个搜索引擎和一个计算器。我们将使用 LangGraph 来构建这个智能体。1. 安装依赖
首先,安装必要的依赖:2. 设置环境
接下来,设置你的环境变量:3. 定义工具
现在,定义智能体将使用的工具: CODE_BLOCK_24. 定义状态
接下来,定义智能体的状态: CODE_BLOCK_35. 定义智能体
现在,定义智能体本身: CODE_BLOCK_46. 编译智能体
接下来,编译智能体: CODE_BLOCK_57. 运行智能体
最后,运行智能体: CODE_BLOCK_6下一步
现在你已经构建了一个简单的智能体,你可以开始探索更高级的功能。以下是一些你可以尝试的事情:- 添加记忆:你可以向智能体添加记忆,使其能够记住过去的交互。
- 添加更多工具:你可以向智能体添加更多工具,使其能够执行更多任务。
- 定义自定义逻辑:你可以定义自定义逻辑,使智能体能够做出更复杂的决策。
- 定义自定义状态:你可以定义自定义状态,使智能体能够拥有更复杂的状态。