鱼C论坛

 找回密码
 立即注册
查看: 20|回复: 4

[AI工作流] 25 LangChain组件——检索向量并构建提示词

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.  知识点补充:
向量存储的实例,通过add_texts(list[str])方法可以快速添加到向量存储中。




2.代码实战
  1. """
  2. 提示词:用户的提问 + 向量库中检索到的参考资料
  3. """
  4. from langchain_community.chat_models import ChatTongyi
  5. from langchain_core.vectorstores import InMemoryVectorStore
  6. from langchain_community.embeddings import DashScopeEmbeddings
  7. from langchain_core.prompts import ChatPromptTemplate
  8. from langchain_core.output_parsers import StrOutputParser


  9. def print_prompt(prompt):
  10.     print(prompt.to_string())
  11.     print("=" * 20)
  12.     return prompt


  13. model = ChatTongyi(model="qwen3-max")
  14. prompt = ChatPromptTemplate.from_messages(
  15.     [
  16.         ("system", "以我提供的已知参考资料为主,简洁和专业的回答用户问题。参考资料:{context}。"),
  17.         ("user", "用户提问:{input}")
  18.     ]
  19. )

  20. vector_store = InMemoryVectorStore(embedding=DashScopeEmbeddings(model="text-embedding-v4"))

  21. # 准备一下资料(向量库的数据)
  22. # add_texts 传入一个 list[str]
  23. vector_store.add_texts(
  24.     ["减肥就是要少吃多练", "在减脂期间吃东西很重要,清淡少油控制卡路里摄入并运动起来", "跑步是很好的运动哦"])

  25. input_text = "怎么减肥?"

  26. # 检索向量库
  27. result = vector_store.similarity_search(input_text, 2)
  28. reference_text = "["
  29. for doc in result:
  30.     reference_text += doc.page_content
  31. reference_text += "]"

  32. chain = prompt | print_prompt | model | StrOutputParser()

  33. res = chain.invoke({"input": input_text, "context": reference_text})
  34. print(res)
复制代码



学习视频:【黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目】[url=https://www.bilibili.com/video/B ... 2bff4ed856eadc41a71]https://www.bilibili.com/video/BV1yjz5BLEoY/?p=44&share_source=copy_web&vd_source=792a2cb63a1882bff4ed856eadc41a71[/url]

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
以下是完整的代码实现:


  1. """
  2. 提示词:用户的提问 + 向量库中检索到的参考资料
  3. """
  4. from langchain_community.chat_models import ChatTongyi
  5. from langchain_core.vectorstores import InMemoryVectorStore
  6. from langchain_community.embeddings import DashScopeEmbeddings
  7. from langchain_core.prompts import ChatPromptTemplate
  8. from langchain_core.output_parsers import StrOutputParser


  9. def print_prompt(prompt):
  10.     print(prompt.to_string())
  11.     print("=" * 20)
  12.     return prompt


  13. model = ChatTongyi(model="qwen3-max")
  14. prompt = ChatPromptTemplate.from_messages([
  15.     ("system", "你是一个健身教练,请根据以下参考资料回答用户的问题。如果参考资料中没有相关答案,请根据你的知识回答。\n参考资料:{context}"),
  16.     ("human", "{input}")
  17. ])

  18. vector_store = InMemoryVectorStore(embedding=DashScopeEmbeddings(model="text-embedding-v4"))

  19. # 准备一下资料(向量库的数据)
  20. # add_texts 传入一个 list
  21. vector_store.add_texts([
  22.     "减肥需要控制饮食,减少高热量食物的摄入,并增加体育锻炼。",
  23.     "有氧运动如跑步、游泳和骑自行车可以帮助燃烧脂肪。",
  24.     "力量训练可以增加肌肉量,提高基础代谢率,从而帮助减肥。",
  25.     "饮食上建议多吃蔬菜、水果和全谷物,少吃油炸食品和甜食。"
  26. ])

  27. input_text = "怎么减肥?"

  28. # 检索向量库
  29. result = vector_store.similarity_search(input_text, 2)
  30. reference_text = "\n".join([doc.page_content for doc in result])

  31. chain = prompt | print_prompt | model | StrOutputParser()

  32. res = chain.invoke({"input": input_text, "context": reference_text})
  33. print(res)
复制代码


代码解释:

1. 首先创建了 ChatTongyi 模型和 ChatPromptTemplate 提示词模板

2. 创建向量存储并添加减肥相关的文本资料到向量库中

3. 使用 similarity_search 方法检索与输入问题相关的文本

4. 将检索结果合并为参考文本,并与用户问题一起构建提示词

5. 通过链式调用处理并输出结果

运行结果会显示构建的完整提示词和模型的回答。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 半小时前 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 半小时前 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 半小时前 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-8 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表