四、(基础)使用_LangChain_向量存储和检索

58 阅读29分钟

前言

  1. 通过前几篇文章,我们已经学习了 LangChain 的一些用法,包括如何创建和调用模型、上下文记忆、创建提示词模版、管理对话历史,控制上下文长等。
  2. 本章将讲解如何调用向量模型、使用向量数据库等,为建立我们自己的知识库做准备。

准备工作

  • 需要了解构建 LangChain 的一些用法,可以阅读本专栏内容,欢迎订阅
  • pip安装LangChain:pip install langchain
  • 调用大模型key,我们主要是学习为主,能白嫖自然白嫖,不需要多么快速的响应,下面是对应的申请方式,都是免费的,其他模型都是需要对应token花费钱的。注意:我们只要申请openai的key,openai更加通用
    • 腾讯元宝:hunyuan-lite,申请地址
    • 智谱AI:GLM-4-Flash-250414,申请地址,更推荐,响应速度快,更精准,对 openai 接口兼容性更好
    • 硅基流动向量模型:BAAI/bge-m3,申请地址
  • 以上模型都是免费的,可以放心使用,注意申请 openai 访问方式的key,注意:本章内容需要使用向量模型,请注意申请
  • 建议使用 Jupyter Notebook,更加方便,安装教程

1. 硅基流动向量模型申请步骤(已有可忽略)

我们登录硅基流动后选择:模型广场 -> 嵌入 -> 免费 找到向量模型,选择一个想要的模型 这些都是免费的小模型,可能没大模型精准,但是对于我们学习来说是够用了,最主要的是免费 在这里插入图片描述

2. 安装向量库(已有可忽略)

向量数据库有很多,如:chroma、Milvus、Pinecone、‌Qdrant等等,这里我们以 chroma 为例 这里我们使用虚拟机安装 docker 的方式安装 chromadb 向量库 如何安装 docker 可以查看我以前的博客:CentOS安装docker及一些命令 docker安转 chromadb 命令:

docker run -d --rm --name chromadb -p 8000:8000 -v /home/chroma:/chroma/chroma -e IS_PERSISTENT=TRUE -e ANONYMIZED_TELEMETRY=TRUE --restart=always chromadb/chroma

查看我们虚拟机的ip地址然后在浏览器访问 http://ip地址:8000/docs/#/ 能访问到说明安装成功 在这里插入图片描述

2.1 创建一个新的数据库

填入用户:default_tenant(可以不用默认用户,直接创建一个新用户,这里为了减少步骤就不过多展示了) 填入要创建的数据库名称:llm_python_txt_1 点击执行 在这里插入图片描述

3. 向量存储

3.1 安装 langchain-chroma 包

pip install langchain-chroma

3.2 准备文档

LangChain 实现了一个 文档 抽象,旨在表示一个文本单元及其相关元数据。它有两个属性:

  • page_content:一个表示内容的字符串;
  • metadata:一个包含任意元数据的字典。
  • metadata 属性可以捕获有关文档来源、与其他文档的关系以及其他信息。请注意,单个 Document 对象通常表示一个较大文档的一部分。

让我们随便找个文档复制粘贴生成一些示例:

documents = [
    Document(
        page_content="韩立以谨慎著称,行事前会进行周密谋划,不轻易冒险。他善于利用资源并注重利益权衡,例如在关键时刻隐匿实力或建立有益关系以避免冲突。 低调与隐忍他习惯隐藏真实实力,常通过伪装弱小保护自己,避免过早暴露潜力引发不必要的麻烦。这种性格特质使他在险恶的修仙界得以生存并逐步壮大。 ‌坚韧与目标明确韩立目标坚定,面对瓶颈或生死考验时展现出惊人毅力。他注重修行基础,避免因追求速度而忽视根基,这种特质支撑他突破瓶颈并持续进步。 理性与恩怨分明他遵循“杀伐果断,恩怨分明”的原则,在资源有限的环境中始终以自身利益为核心,但也会在力所能及时帮助他人。",
        metadata={"source": "韩老魔性格.pdf"},
    ),
    Document(
        page_content="韩立的宝物可分为不同阶段的重要物品及战斗法宝两类:关键生存型宝物掌天瓶:核心外挂道具,可催熟灵药、凝聚时间晶粒,助其突破瓶颈并多次穿越时空。青竹蜂云剑:本命法宝,由万年金雷竹炼制,后期精炼至剑心通灵境界,配合剑阵可斩杀同阶修士。风雷翅:由雷鹏双翅炼制,强化后融入鲲鹏之羽等材料,成为逃脱追击的顶级遁术法宝。战斗与辅助类宝物玄天斩灵剑:大乘期神器,斩灵剑蕴含毁灭法则,可斩杀真仙马良等强者。元合五极山:由元磁神山等材料炼制,可削弱雷劫威力,助其成功飞升真仙界。赤魂幡:由黑风旗炼制,可收服元磁神山,威力取决于祭炼生魂数量。七焰扇:通天灵宝,仿制品曾击败元婴期银翅夜叉,但完全体难以寻觅。特殊材料与辅助道具炼晶:由铁火蚁后产出,可强化法宝坚韧度,韩立用其重炼青竹蜂云剑。婆罗珠:安神定魂的宝物,助其通过虚天殿第三关极妙幻境。皇麟甲:蛮胡子赠送的防御法宝,可抵御元婴期攻击,后因损坏无法修复。",
        metadata={"source": "韩老魔宝物.pdf"},
    ),
    Document(
        page_content="韩立的伴侣是南宫婉,是唯一正式结为道侣的角色。南宫婉身份:掩月宗女修,修炼《素女轮回功》,本命法宝为朱雀环。相遇经历:在血色禁地与韩立合力击杀墨蛟后因触碰其淫囊结缘,元婴期时正式结为道侣。结局:共同飞升灵界,在真仙界重逢并隐居黑土仙域,育有一女甘九真。其他重要女性角色紫灵仙子:元婴期相遇并共抗强敌,约定仙界重逢,最终选择留在魔界追求大道。元瑶:共同孕育后代,在灵界育有一子,属患难与共的灵魂知己。银月:器灵陪伴数百年,忠诚且知晓小瓶秘密,未正式结为道侣但情感深厚。",
        metadata={"source": "韩老魔伴侣.pdf"},
    ),
    Document(
        page_content="韩立当前的境界为大罗金仙巅峰,其修炼历程从凡人历经炼气、筑基、结丹、元婴、化神、炼虚、合体、大乘等阶段,最终在仙界成就时间道祖后主动跌落至大罗金仙。韩立的修炼历程与境界突破人界阶段。炼气期:10岁入七玄门修炼长春功,24岁筑基成功。结丹期:在乱星海苦修六十年结丹,后借碧焰酒快速提升至结丹后期。元婴期:约200余岁在落云宗结婴,后进阶元婴中期破开灵渺园壁障。灵界阶段。化神期:坠魔谷闭关300年,借助极品灵石与极寒之焰突破。炼虚/合体期:1565岁进阶合体初期,期间啼魂兽助其脱险并飞升仙界。大乘期:不到两千年从化神修至大乘,成为灵界第一大乘,人称“韩天尊”。仙界阶段。时间道祖:掌天瓶辅助下成就时间道祖,联合其他道祖击杀混沌道祖。大罗金仙巅峰:为避免天道侵蚀主动放弃道祖之位,境界回落至大罗金仙。",
        metadata={"source": "韩老魔的境界.pdf"},
    ),
    Document(
        page_content="韩立从炼气期到化神期的修炼体系与《仙逆》中的王林存在差异,但核心逻辑一致:练气→筑基→结丹→元婴→化神是基础框架,不同阶段通过吞噬、炼制法宝等方式强化实力。实力对比同境界对比筑基期:韩立依靠8颗筑基丹突破,初期实力弱于王林(凝气十五层+丹宝飞剑);但后期通过大衍诀、青元剑诀等功法,实力反超。结丹期:韩立青元剑诀修炼至第八层,配合风雷翅、噬金虫等手段,可对抗元婴修士;而王林仅靠结丹初期实力尚不足以抗衡同阶。跨境界挑战韩立虽无法越级击杀强敌,但凭借对功法的极致运用和保命手段(如虚天鼎、噬金虫),在同阶中具备压倒性优势。例如元婴初期即可击杀元婴修士,后期更可对抗真灵级存在。关键突破节点化神初期:韩立凭借元磁神光功法、大庚剑阵及六翼霜蚣进化体,已具备灵界顶尖战力。大乘期:玄天斩灵剑与梵圣真魔功结合,达到人界战力巅峰,可直面真仙级存在。",
        metadata={"source": "韩老魔的实力对比.pdf"},
    ),
]

3.3 存储

向量搜索是一种常见的存储和搜索非结构化数据(例如非结构化文本)的方法。其思想是存储与文本相关联的数值向量。给定一个查询,我们可以将其 嵌入 为相同维度的向量,并使用向量相似性度量来识别存储中的相关数据。

LangChain 向量存储 对象包含用于将文本和 文档 对象添加到存储中以及使用各种相似性度量进行查询的方法。它们通常使用 嵌入 模型进行初始化,这决定了文本数据如何转换为数值向量。

LangChain 包含与不同向量存储技术的 集成 套件。这里我们将演示使用 Chroma 的 LangChain 向量存储,它包括一个内存实现。

要实例化一个向量存储,我们通常需要提供一个 嵌入 模型,以指定文本应如何转换为数值向量。这里我们将使用刚才注册的硅基流动向量模型:BAAI/bge-m3。

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
from langchain_core.documents import Document
import chromadb

documents = [
    Document(
        page_content="韩立以谨慎著称,行事前会进行周密谋划,不轻易冒险。他善于利用资源并注重利益权衡,例如在关键时刻隐匿实力或建立有益关系以避免冲突。 低调与隐忍他习惯隐藏真实实力,常通过伪装弱小保护自己,避免过早暴露潜力引发不必要的麻烦。这种性格特质使他在险恶的修仙界得以生存并逐步壮大。 ‌坚韧与目标明确韩立目标坚定,面对瓶颈或生死考验时展现出惊人毅力。他注重修行基础,避免因追求速度而忽视根基,这种特质支撑他突破瓶颈并持续进步。 理性与恩怨分明他遵循“杀伐果断,恩怨分明”的原则,在资源有限的环境中始终以自身利益为核心,但也会在力所能及时帮助他人。",
        metadata={"source": "韩老魔性格.pdf"},
    ),
    Document(
        page_content="韩立的宝物可分为不同阶段的重要物品及战斗法宝两类:关键生存型宝物掌天瓶:核心外挂道具,可催熟灵药、凝聚时间晶粒,助其突破瓶颈并多次穿越时空。青竹蜂云剑:本命法宝,由万年金雷竹炼制,后期精炼至剑心通灵境界,配合剑阵可斩杀同阶修士。风雷翅:由雷鹏双翅炼制,强化后融入鲲鹏之羽等材料,成为逃脱追击的顶级遁术法宝。战斗与辅助类宝物玄天斩灵剑:大乘期神器,斩灵剑蕴含毁灭法则,可斩杀真仙马良等强者。元合五极山:由元磁神山等材料炼制,可削弱雷劫威力,助其成功飞升真仙界。赤魂幡:由黑风旗炼制,可收服元磁神山,威力取决于祭炼生魂数量。七焰扇:通天灵宝,仿制品曾击败元婴期银翅夜叉,但完全体难以寻觅。特殊材料与辅助道具炼晶:由铁火蚁后产出,可强化法宝坚韧度,韩立用其重炼青竹蜂云剑。婆罗珠:安神定魂的宝物,助其通过虚天殿第三关极妙幻境。皇麟甲:蛮胡子赠送的防御法宝,可抵御元婴期攻击,后因损坏无法修复。",
        metadata={"source": "韩老魔宝物.pdf"},
    ),
    Document(
        page_content="韩立的伴侣是南宫婉,是唯一正式结为道侣的角色。南宫婉身份:掩月宗女修,修炼《素女轮回功》,本命法宝为朱雀环。相遇经历:在血色禁地与韩立合力击杀墨蛟后因触碰其淫囊结缘,元婴期时正式结为道侣。结局:共同飞升灵界,在真仙界重逢并隐居黑土仙域,育有一女甘九真。其他重要女性角色紫灵仙子:元婴期相遇并共抗强敌,约定仙界重逢,最终选择留在魔界追求大道。元瑶:共同孕育后代,在灵界育有一子,属患难与共的灵魂知己。银月:器灵陪伴数百年,忠诚且知晓小瓶秘密,未正式结为道侣但情感深厚。",
        metadata={"source": "韩老魔伴侣.pdf"},
    ),
    Document(
        page_content="韩立当前的境界为大罗金仙巅峰,其修炼历程从凡人历经炼气、筑基、结丹、元婴、化神、炼虚、合体、大乘等阶段,最终在仙界成就时间道祖后主动跌落至大罗金仙。韩立的修炼历程与境界突破人界阶段。炼气期:10岁入七玄门修炼长春功,24岁筑基成功。结丹期:在乱星海苦修六十年结丹,后借碧焰酒快速提升至结丹后期。元婴期:约200余岁在落云宗结婴,后进阶元婴中期破开灵渺园壁障。灵界阶段。化神期:坠魔谷闭关300年,借助极品灵石与极寒之焰突破。炼虚/合体期:1565岁进阶合体初期,期间啼魂兽助其脱险并飞升仙界。大乘期:不到两千年从化神修至大乘,成为灵界第一大乘,人称“韩天尊”。仙界阶段。时间道祖:掌天瓶辅助下成就时间道祖,联合其他道祖击杀混沌道祖。大罗金仙巅峰:为避免天道侵蚀主动放弃道祖之位,境界回落至大罗金仙。",
        metadata={"source": "韩老魔的境界.pdf"},
    ),
    Document(
        page_content="韩立从炼气期到化神期的修炼体系与《仙逆》中的王林存在差异,但核心逻辑一致:练气→筑基→结丹→元婴→化神是基础框架,不同阶段通过吞噬、炼制法宝等方式强化实力。实力对比同境界对比筑基期:韩立依靠8颗筑基丹突破,初期实力弱于王林(凝气十五层+丹宝飞剑);但后期通过大衍诀、青元剑诀等功法,实力反超。结丹期:韩立青元剑诀修炼至第八层,配合风雷翅、噬金虫等手段,可对抗元婴修士;而王林仅靠结丹初期实力尚不足以抗衡同阶。跨境界挑战韩立虽无法越级击杀强敌,但凭借对功法的极致运用和保命手段(如虚天鼎、噬金虫),在同阶中具备压倒性优势。例如元婴初期即可击杀元婴修士,后期更可对抗真灵级存在。关键突破节点化神初期:韩立凭借元磁神光功法、大庚剑阵及六翼霜蚣进化体,已具备灵界顶尖战力。大乘期:玄天斩灵剑与梵圣真魔功结合,达到人界战力巅峰,可直面真仙级存在。",
        metadata={"source": "韩老魔的实力对比.pdf"},
    ),
]
# 构建远程向量数据库
chroma_client = chromadb.HttpClient(host='虚拟机ip地址', port=8000, database="llm_python_txt_1", tenant="default_tenant")
embedding=OpenAIEmbeddings(model="BAAI/bge-m3", api_key="申请的key", base_url="https://api.siliconflow.cn/v1", dimensions=1024)
vectorstore = Chroma.from_documents(
    documents,
    client=chroma_client,
    collection_name="txt_000",  # 集合名称,会自动创建
    embedding=embedding,
)

至此我们的文档已经存入到向量数据库:llm_python_txt_1 的 txt_000 集合中

3.4 检索

我们试着来检索下刚才存储的内容,展示三种不同的方式

from langchain_core.documents import Document
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
from langchain_core.documents import Document
from langchain_core.runnables import RunnableLambda
import chromadb

# 构建远程向量数据库
chroma_client = chromadb.HttpClient(host='虚拟机ip地址', port=8000, database="llm_python_txt_1", tenant="default_tenant")
embedding=OpenAIEmbeddings(model="BAAI/bge-m3", api_key="申请的key", base_url="https://api.siliconflow.cn/v1", dimensions=1024)

vectorstore = Chroma(
    client=chroma_client,
    collection_name="txt_000",
    embedding_function=embedding
)

# vectorstore.similarity_search("伴侣") # 检索
# await vectorstore.asimilarity_search("伴侣") # 异步处理检索
print(vectorstore.similarity_search_with_score("伴侣"))  # 返回相似度检索

返回值

[(Document(id='ea28e9e5-69c6-416f-bc27-4bc609a9a37e', metadata={'source': '韩老魔伴侣.pdf'}, page_content='韩立的伴侣是南宫婉,是唯一正式结为道侣的角色。南宫婉身份:掩月宗女修,修炼《素女轮回功》,本命法宝为朱雀环。相遇经历:在血色禁地与韩立合力击杀墨蛟后因触碰其淫囊结缘,元婴期时正式结为道侣。结局:共同飞升灵界,在真仙界重逢并隐居黑土仙域,育有一女甘九真。其他重要女性角色紫灵仙子:元婴期相遇并共抗强敌,约定仙界重逢,最终选择留在魔界追求大道。元瑶:共同孕育后代,在灵界育有一子,属患难与共的灵魂知己。银月:器灵陪伴数百年,忠诚且知晓小瓶秘密,未正式结为道侣但情感深厚。'),
  1.4259977),
 (Document(id='ae6c88eb-8ef2-4b49-8384-45b15993c3bf', metadata={'source': '韩老魔的境界.pdf'}, page_content='韩立当前的境界为大罗金仙巅峰,其修炼历程从凡人历经炼气、筑基、结丹、元婴、化神、炼虚、合体、大乘等阶段,最终在仙界成就时间道祖后主动跌落至大罗金仙。韩立的修炼历程与境界突破人界阶段。炼气期:10岁入七玄门修炼长春功,24岁筑基成功。结丹期:在乱星海苦修六十年结丹,后借碧焰酒快速提升至结丹后期。元婴期:约200余岁在落云宗结婴,后进阶元婴中期破开灵渺园壁障。灵界阶段。化神期:坠魔谷闭关300年,借助极品灵石与极寒之焰突破。炼虚/合体期:1565岁进阶合体初期,期间啼魂兽助其脱险并飞升仙界。大乘期:不到两千年从化神修至大乘,成为灵界第一大乘,人称“韩天尊”。仙界阶段。时间道祖:掌天瓶辅助下成就时间道祖,联合其他道祖击杀混沌道祖。大罗金仙巅峰:为避免天道侵蚀主动放弃道祖之位,境界回落至大罗金仙。'),
  1.45748),
 (Document(id='c85b8e08-8558-4947-94bc-07d26d1876a1', metadata={'source': '韩老魔的实力对比.pdf'}, page_content='韩立从炼气期到化神期的修炼体系与《仙逆》中的王林存在差异,但核心逻辑一致:练气→筑基→结丹→元婴→化神是基础框架,不同阶段通过吞噬、炼制法宝等方式强化实力。实力对比同境界对比筑基期:韩立依靠8颗筑基丹突破,初期实力弱于王林(凝气十五层+丹宝飞剑);但后期通过大衍诀、青元剑诀等功法,实力反超。结丹期:韩立青元剑诀修炼至第八层,配合风雷翅、噬金虫等手段,可对抗元婴修士;而王林仅靠结丹初期实力尚不足以抗衡同阶。跨境界挑战韩立虽无法越级击杀强敌,但凭借对功法的极致运用和保命手段(如虚天鼎、噬金虫),在同阶中具备压倒性优势。例如元婴初期即可击杀元婴修士,后期更可对抗真灵级存在。关键突破节点化神初期:韩立凭借元磁神光功法、大庚剑阵及六翼霜蚣进化体,已具备灵界顶尖战力。大乘期:玄天斩灵剑与梵圣真魔功结合,达到人界战力巅峰,可直面真仙级存在。'),
  1.4711889),
 (Document(id='26ee6579-c162-4ea5-93ca-5c023ac7249c', metadata={'source': '韩老魔宝物.pdf'}, page_content='韩立的宝物可分为不同阶段的重要物品及战斗法宝两类:关键生存型宝物掌天瓶:核心外挂道具,可催熟灵药、凝聚时间晶粒,助其突破瓶颈并多次穿越时空。青竹蜂云剑:本命法宝,由万年金雷竹炼制,后期精炼至剑心通灵境界,配合剑阵可斩杀同阶修士。风雷翅:由雷鹏双翅炼制,强化后融入鲲鹏之羽等材料,成为逃脱追击的顶级遁术法宝。战斗与辅助类宝物玄天斩灵剑:大乘期神器,斩灵剑蕴含毁灭法则,可斩杀真仙马良等强者。元合五极山:由元磁神山等材料炼制,可削弱雷劫威力,助其成功飞升真仙界。赤魂幡:由黑风旗炼制,可收服元磁神山,威力取决于祭炼生魂数量。七焰扇:通天灵宝,仿制品曾击败元婴期银翅夜叉,但完全体难以寻觅。特殊材料与辅助道具炼晶:由铁火蚁后产出,可强化法宝坚韧度,韩立用其重炼青竹蜂云剑。婆罗珠:安神定魂的宝物,助其通过虚天殿第三关极妙幻境。皇麟甲:蛮胡子赠送的防御法宝,可抵御元婴期攻击,后因损坏无法修复。'),
  1.491421)]

4. 检索器

LangChain VectorStore 对象不继承 Runnable,因此无法立即集成到 LangChain 表达式 chains 中。

LangChain 检索器 是 Runnables,因此它们实现了一组标准方法(例如,同步和异步的 invoke 和 batch 操作),并设计为可以纳入 LCEL 链中。

我们可以自己创建一个简单版本,而无需继承 Retriever。如果我们选择希望用于检索文档的方法,我们可以轻松创建一个可运行的对象。下面我们将围绕 similarity_search 方法构建一个:

from langchain_core.documents import Document
from langchain_core.runnables import RunnableLambda

retriever = RunnableLambda(vectorstore.similarity_search).bind(k=1) 

retriever.batch(["伴侣", "实力"])

向量存储实现了一个 as_retriever 方法,该方法将生成一个检索器,特别是一个 VectorStoreRetriever。这些检索器包括特定的 search_type 和 search_kwargs 属性,用于识别调用底层向量存储的方法,以及如何对其进行参数化。例如,我们可以用以下方式复制上述内容:

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
import chromadb

# 构建远程向量数据库
chroma_client = chromadb.HttpClient(host='虚拟机ip地址', port=8000, database="llm_python_txt_1", tenant="default_tenant")
embedding=OpenAIEmbeddings(model="BAAI/bge-m3", api_key="申请的key", base_url="https://api.siliconflow.cn/v1", dimensions=1024)

vectorstore = Chroma(
    client=chroma_client,
    collection_name="txt_000",
    embedding_function=embedding
)

retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 3},
)

print(retriever.batch(["伴侣", "实力"]))

查看返回值,注意:向量搜索是根据语义进行搜索,会有一个相似值,比如我们搜索了《实力》,境界也是实力的一种,也被搜索出来,和我们传统意义上的增删改查搜索概念是不同的

[
	[
		Document(id='ea28e9e5-69c6-416f-bc27-4bc609a9a37e', metadata={'source': '韩老魔伴侣.pdf'}, page_content='韩立的伴侣是南宫婉,是唯一正式结为道侣的角色。南宫婉身份:掩月宗女修,修炼《素女轮回功》,本命法宝为朱雀环。相遇经历:在血色禁地与韩立合力击杀墨蛟后因触碰其淫囊结缘,元婴期时正式结为道侣。结局:共同飞升灵界,在真仙界重逢并隐居黑土仙域,育有一女甘九真。其他重要女性角色紫灵仙子:元婴期相遇并共抗强敌,约定仙界重逢,最终选择留在魔界追求大道。元瑶:共同孕育后代,在灵界育有一子,属患难与共的灵魂知己。银月:器灵陪伴数百年,忠诚且知晓小瓶秘密,未正式结为道侣但情感深厚。'), 
		Document(id='ae6c88eb-8ef2-4b49-8384-45b15993c3bf', metadata={'source': '韩老魔的境界.pdf'}, page_content='韩立当前的境界为大罗金仙巅峰,其修炼历程从凡人历经炼气、筑基、结丹、元婴、化神、炼虚、合体、大乘等阶段,最终在仙界成就时间道祖后主动跌落至大罗金仙。韩立的修炼历程与境界突破人界阶段。炼气期:10岁入七玄门修炼长春功,24岁筑基成功。结丹期:在乱星海苦修六十年结丹,后借碧焰酒快速提升至结丹后期。元婴期:约200余岁在落云宗结婴,后进阶元婴中期破开灵渺园壁障。灵界阶段。化神期:坠魔谷闭关300年,借助极品灵石与极寒之焰突破。炼虚/合体期:1565岁进阶合体初期,期间啼魂兽助其脱险并飞升仙界。大乘期:不到两千年从化神修至大乘,成为灵界第一大乘,人称“韩天尊”。仙界阶段。时间道祖:掌天瓶辅助下成就时间道祖,联合其他道祖击杀混沌道祖。大罗金仙巅峰:为避免天道侵蚀主动放弃道祖之位,境界回落至大罗金仙。'), 
		Document(id='c85b8e08-8558-4947-94bc-07d26d1876a1', metadata={'source': '韩老魔的实力对比.pdf'}, page_content='韩立从炼气期到化神期的修炼体系与《仙逆》中的王林存在差异,但核心逻辑一致:练气→筑基→结丹→元婴→化神是基础框架,不同阶段通过吞噬、炼制法宝等方式强化实力。实力对比同境界对比筑基期:韩立依靠8颗筑基丹突破,初期实力弱于王林(凝气十五层+丹宝飞剑);但后期通过大衍诀、青元剑诀等功法,实力反超。结丹期:韩立青元剑诀修炼至第八层,配合风雷翅、噬金虫等手段,可对抗元婴修士;而王林仅靠结丹初期实力尚不足以抗衡同阶。跨境界挑战韩立虽无法越级击杀强敌,但凭借对功法的极致运用和保命手段(如虚天鼎、噬金虫),在同阶中具备压倒性优势。例如元婴初期即可击杀元婴修士,后期更可对抗真灵级存在。关键突破节点化神初期:韩立凭借元磁神光功法、大庚剑阵及六翼霜蚣进化体,已具备灵界顶尖战力。大乘期:玄天斩灵剑与梵圣真魔功结合,达到人界战力巅峰,可直面真仙级存在。')
	], 
	[
		Document(id='ae6c88eb-8ef2-4b49-8384-45b15993c3bf', metadata={'source': '韩老魔的境界.pdf'}, page_content='韩立当前的境界为大罗金仙巅峰,其修炼历程从凡人历经炼气、筑基、结丹、元婴、化神、炼虚、合体、大乘等阶段,最终在仙界成就时间道祖后主动跌落至大罗金仙。韩立的修炼历程与境界突破人界阶段。炼气期:10岁入七玄门修炼长春功,24岁筑基成功。结丹期:在乱星海苦修六十年结丹,后借碧焰酒快速提升至结丹后期。元婴期:约200余岁在落云宗结婴,后进阶元婴中期破开灵渺园壁障。灵界阶段。化神期:坠魔谷闭关300年,借助极品灵石与极寒之焰突破。炼虚/合体期:1565岁进阶合体初期,期间啼魂兽助其脱险并飞升仙界。大乘期:不到两千年从化神修至大乘,成为灵界第一大乘,人称“韩天尊”。仙界阶段。时间道祖:掌天瓶辅助下成就时间道祖,联合其他道祖击杀混沌道祖。大罗金仙巅峰:为避免天道侵蚀主动放弃道祖之位,境界回落至大罗金仙。'), 
		Document(id='ea28e9e5-69c6-416f-bc27-4bc609a9a37e', metadata={'source': '韩老魔伴侣.pdf'}, page_content='韩立的伴侣是南宫婉,是唯一正式结为道侣的角色。南宫婉身份:掩月宗女修,修炼《素女轮回功》,本命法宝为朱雀环。相遇经历:在血色禁地与韩立合力击杀墨蛟后因触碰其淫囊结缘,元婴期时正式结为道侣。结局:共同飞升灵界,在真仙界重逢并隐居黑土仙域,育有一女甘九真。其他重要女性角色紫灵仙子:元婴期相遇并共抗强敌,约定仙界重逢,最终选择留在魔界追求大道。元瑶:共同孕育后代,在灵界育有一子,属患难与共的灵魂知己。银月:器灵陪伴数百年,忠诚且知晓小瓶秘密,未正式结为道侣但情感深厚。'), 
		Document(id='c85b8e08-8558-4947-94bc-07d26d1876a1', metadata={'source': '韩老魔的实力对比.pdf'}, page_content='韩立从炼气期到化神期的修炼体系与《仙逆》中的王林存在差异,但核心逻辑一致:练气→筑基→结丹→元婴→化神是基础框架,不同阶段通过吞噬、炼制法宝等方式强化实力。实力对比同境界对比筑基期:韩立依靠8颗筑基丹突破,初期实力弱于王林(凝气十五层+丹宝飞剑);但后期通过大衍诀、青元剑诀等功法,实力反超。结丹期:韩立青元剑诀修炼至第八层,配合风雷翅、噬金虫等手段,可对抗元婴修士;而王林仅靠结丹初期实力尚不足以抗衡同阶。跨境界挑战韩立虽无法越级击杀强敌,但凭借对功法的极致运用和保命手段(如虚天鼎、噬金虫),在同阶中具备压倒性优势。例如元婴初期即可击杀元婴修士,后期更可对抗真灵级存在。关键突破节点化神初期:韩立凭借元磁神光功法、大庚剑阵及六翼霜蚣进化体,已具备灵界顶尖战力。大乘期:玄天斩灵剑与梵圣真魔功结合,达到人界战力巅峰,可直面真仙级存在。')
	]
]

检索器可以轻松地纳入更复杂的应用程序,例如检索增强生成(RAG)应用程序,这些应用程序将给定问题与检索到的上下文结合成 LLM 的提示。帮助我们建立自己的知识库,下面展示一个示例。

from langchain_openai import OpenAIEmbeddings
import chromadb
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_chroma import Chroma

chroma_client = chromadb.HttpClient(host='虚拟机ip地址', port=8000, database="llm_python_txt_1", tenant="default_tenant")
llm = ChatOpenAI(model="GLM-4-Flash-250414", api_key="申请的key", base_url="https://open.bigmodel.cn/api/paas/v4/")
embedding=OpenAIEmbeddings(model="BAAI/bge-m3", api_key="申请的key", base_url="https://api.siliconflow.cn/v1", dimensions=1024)
vectorstore = Chroma(
    client=chroma_client,
    collection_name="txt_000",
    embedding_function=embedding
)
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 1},
)


message = """
仅使用提供的上下文回答此问题。

{question}

Context:
{context}
"""

prompt = ChatPromptTemplate.from_messages([("human", message)])
rag_chain = {"context": retriever, "question": RunnablePassthrough()} | prompt | llm
response = rag_chain.invoke("跟我说说韩立")

print(response.content)

返回值

韩立是一位修仙者,他的修炼体系从炼气期到化神期与《仙逆》中的王林的核心逻辑一致,即练气→筑基→结丹→元婴→化神。不同阶段通过吞噬、炼制法宝等方式强化实力。 在筑基期,韩立依靠8颗筑基丹突破,初期实力弱于王林,但后期通过大衍诀、青元剑诀等功法,实力反超。在结丹期,韩立青元剑诀修炼至第八层,配合风雷翅、噬金虫等手段,可对抗元婴修士;而王林仅靠结丹初期实力尚不足以抗衡同阶。 韩立虽无法越级击杀强敌,但凭借对功法的极致运用和保命手段(如虚天鼎、噬金虫),在同阶中具备压倒性优势。例如元婴初期即可击杀元婴修士,后期更可对抗真灵级存在。 在化神初期,韩立凭借元磁神光功法、大庚剑阵及六翼霜蚣进化体,已具备灵界顶尖战力。在大乘期,玄天斩灵剑与梵圣真魔功结合,达到人界战力巅峰,可直面真仙级存在。

本章讲解了如何调用向量模型、使用向量数据库等,并将其融入到 langchain 的链式操作中,下章节我们将讲解使用联网搜索和模型进行交互,并如何创建代理,使 langchain 自动操作模型获得我们想要的结果