学习笔记:检索增强生成 - 通过 RAG 助力鲜花运营

58 阅读2分钟

课程链接

LangChain 实战课 - 掘金小册

1. 设置 OpenAI 的 API 密钥

在本节中,我们首先涉及到了如何导入必要的库和模块,这些是后续操作的基础。涉及到的库包括 os 模块用于环境变量操作,volcenginesdkarkruntime 中的 Ark 用于API调用,typing 中的 ListAny 用于类型注解,langchain.embeddings.base 中的 Embeddings 用于文本嵌入,以及 langchain.pydantic_v1 中的 BaseModel 用于数据模型验证。

2. 初始化 Embedding 类

我们创建了一个名为 DoubaoEmbeddings 的类,它继承自 BaseModelEmbeddings。这个类的属性包括 clientapi_keymodel。在类的构造函数 __init__ 中,如果 api_key 未提供,则会自动从环境变量 OPENAI_API_KEY 中获取。同时,我们初始化了 Ark 客户端,设置了 base_urlapi_key,为后续的API调用做好了准备。

3. 生成文本的 Embedding

在这一节中,我们介绍了两个核心方法:

  • embed_query 方法:该方法用于生成输入文本的 embedding,并返回一个浮点数值列表。
  • embed_documents 方法:该方法对一个文本列表进行 embedding,并返回一个嵌入列表。

4. 使用 Embedding

我们创建了一个 DoubaoEmbeddings 实例,并使用 embed_documents 方法为一组文本生成嵌入。随后,我们打印了嵌入向量的长度和第一个向量的前三个元素,以验证嵌入的正确性。

5. 缓存嵌入向量

为了提高效率和响应速度,我们引入了缓存机制:

  • 导入 InMemoryStore 用于在 RAM 中临时存储数据。
  • 创建 CacheBackedEmbeddings 实例,提供缓存功能,嵌入存储在 InMemoryStore 中。
  • 使用 embedder 为两段文本生成嵌入,并将结果存储在内存存储中。

6. 文档加载和索引创建

在这一节中,我们探讨了如何加载文档和创建索引:

  • 导入 TextLoader 用于加载文本文件。
  • 使用 VectorstoreIndexCreator 从加载器创建索引。
  • 定义查询字符串,并使用创建的索引执行查询,打印查询结果。

7. 文本分割和向量存储

最后,我们讨论了文本分割和向量存储的实现:

  • 导入 CharacterTextSplitter 用于文本分割。
  • 导入 Qdrant 作为向量存储。
  • 创建 VectorstoreIndexCreator 实例,指定 vectorstore_clsQdrant,使用 CharacterTextSplitter 进行文本分割。

总结

通过本章节的学习,我们不仅掌握了如何使用 RAG(Retrieval-Augmented Generation)技术来助力鲜花运营,还通过实际代码示例深入了解了从设置 OpenAI API 密钥、初始化 Embedding 类、生成文本的 Embedding、缓存嵌入向量、文档加载和索引创建、到文本分割和向量存储的完整流程。这些技术的应用极大地提高了鲜花运营的效率和准确性,为相关领域的AI应用提供了强有力的技术支持。