AI创想

标题: LangChain框架-嵌入模型详解 [打印本页]

作者: admin    时间: 2025-9-7 23:02
标题: LangChain框架-嵌入模型详解
嵌入模型

        嵌入模型创建文本片段的向量表示。您可以将向量视为一个数字数组,它捕捉了文本的语义含义。 通过这种方式表示文本,您可以执行数学运算,从而进行诸如搜索其他在意义上最相似的文本等操作。 这些自然语言搜索能力支撑着许多类型的上下文检索, 在这里,我们为大型语言模型提供其有效响应查询所需的相关数据。
Embeddings类

   Embeddings类是一个用于与文本嵌入模型接口的类。存在许多不同的嵌入大模型供应商(OpenAI、Cohere、Hugging Face等)和本地模型,此类旨在为它们提供标准接口。以下是langchain-community  V0.3.21版本提供的Embeddings 实现类的分类简要介绍。

主流云服务提供商


开源与本地模型


国产与区域服务


行业特定或企业级


小众或实验性


硬件优化


其他


LangChain 文本嵌入方法

        LangChain 中的基础 Embeddings 类提供了两个方法:
代码示例

        接下来,我们以使用开源平台HuggingFace的Embeddings类作为示例,展示LangChain 中的两个文本嵌入方法。
  1. from langchain_huggingface import HuggingFaceEmbeddings
  2. embeddings_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2")
复制代码
  1. embeddings = embeddings_model.embed_documents(
  2.     [
  3.         "Hi there!",
  4.         "Oh, hello!",
  5.         "What's your name?",
  6.         "My friends call me World",
  7.         "Hello World!"
  8.     ]
  9. )
  10. len(embeddings), len(embeddings[0])
复制代码
  1. embedded_query = embeddings_model.embed_query("What was the name mentioned in the conversation?")
复制代码
嵌入缓存

        LangChain 的嵌入缓存旨在避免重复计算嵌入向量,提升应用效率,核心依托CacheBackedEmbeddings实现。CacheBackedEmbeddings作为缓存支持的嵌入器,将文本哈希处理后以哈希值为键,在键值存储中缓存嵌入结果,避免对相同文本重复进行嵌入计算,从而提高程序运行效率,降低计算资源消耗 。
注意:
代码示例
  1. from langchain.embeddings import CacheBackedEmbeddings
  2. from langchain.storage import LocalFileStore
  3. from langchain_community.document_loaders import TextLoader
  4. from langchain_community.vectorstores import FAISS
  5. from langchain_openai import OpenAIEmbeddings
  6. from langchain_text_splitters import CharacterTextSplitter
  7. underlying_embeddings = OpenAIEmbeddings()
  8. store = LocalFileStore("./cache/")
  9. cached_embedder = CacheBackedEmbeddings.from_bytes_store(
  10.     underlying_embeddings, store, namespace=underlying_embeddings.model
  11. )
  12. raw_documents = TextLoader("state_of_the_union.txt").load()
  13. text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
  14. documents = text_splitter.split_documents(raw_documents)
  15. db = FAISS.from_documents(documents, cached_embedder)
复制代码
缓存方式



AstraDBByteStore

  1. from langchain_astradb import AstraDBByteStore
  2. kv_store = AstraDBByteStore(
  3.     api_endpoint="YOUR_API_ENDPOINT",
  4.     api_token="YOUR_API_TOKEN"
  5. )
复制代码
CassandraByteStore

  1. from langchain_community.storage import CassandraByteStore
  2. from cassandra.cluster import Cluster
  3. # 配置 Cassandra 连接
  4. cluster = Cluster(['127.0.0.1'])  # 替换为您的 Cassandra 节点地址
  5. session = cluster.connect('langchain_keyspace')  # 替换为您的 Keyspace 名称
  6. # 初始化 CassandraByteStore
  7. byte_store = CassandraByteStore(
  8.     session=session,
  9.     table_name="byte_store"  # 替换为您的表名
  10. )
复制代码
ElasticsearchEmbeddingsCache

  1. from langchain_elasticsearch import ElasticsearchEmbeddingsCache
  2. cache = ElasticsearchEmbeddingsCache(
  3.     elasticsearch_url="http://localhost:9200",
  4.     index_name="embedding_cache"
  5. )
复制代码
InMemoryByteStore

  1. from langchain_core import InMemoryByteStore
  2. store = InMemoryByteStore()
  3. store.put("key1", "value1")
  4. value = store.get("key1")
复制代码
LocalFileStore

  1. from langchain import LocalFileStore
  2. store = LocalFileStore("path/to/store")
  3. store.put("key1", "value1")
  4. value = store.get("key1")
复制代码
RedisStore

  1. from langchain_community import RedisStore
  2. store = RedisStore(host='localhost', port=6379)
  3. store.put("key1", "value1")
  4. value = store.get("key1")
复制代码
UpstashRedisByteStore

  1. from langchain_community.storage import UpstashRedisByteStore
  2. from upstash_redis import Redis
  3. # 配置 Upstash Redis 连接
  4. redis_client = Redis(
  5.     url="https://your-upstash-redis-url",
  6.     token="your-upstash-redis-token"
  7. )
  8. # 初始化 UpstashRedisByteStore
  9. byte_store = UpstashRedisByteStore(client=redis_client)
复制代码
参考文献

键值存储 | LangChain中文网
缓存 | LangChain中文网
使用指南 | LangChain中文网




欢迎光临 AI创想 (https://llms-ai.com/) Powered by Discuz! X3.4