news 2026/7/4 1:06:06

LangChain + RAG 实战(三):构建第一个 RAG Chain

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain + RAG 实战(三):构建第一个 RAG Chain

创作者:Yardon |GitHub:github.com/YardonYan |版本:v1.0 |



LCEL:LangChain 的链式语法

LCEL(LangChain Expression Language)让链式调用变得像搭积木:

fromlangchain.promptsimportChatPromptTemplatefromlangchain.schemaimportStrOutputParser prompt=ChatPromptTemplate.from_template("用{language}写一个{task}的函数")chain=prompt|llm|StrOutputParser()result=chain.invoke({"language":"Python","task":"计算 Fibonacci 数列"})

检索增强生成 (RAG) Chain

fromlangchain.chainsimportcreate_retrieval_chainfromlangchain.chains.combine_documentsimportcreate_stuff_documents_chain# RAG promptprompt=ChatPromptTemplate.from_template(""" 基于以下上下文回答用户的问题。如果上下文中没有相关信息,请如实说不知道。 上下文:\n{context}\n 问题:{input} 回答: """)doc_chain=create_stuff_documents_chain(llm,prompt)rag_chain=create_retrieval_chain(retriever,doc_chain)result=rag_chain.invoke({"input":"useEffect 的依赖数组是什么意思?"})print(result["answer"])

带来源引用的 RAG

result=rag_chain.invoke({"input":"React Hooks 的类型"})print(result["answer"])print("\n--- 参考来源 ---")fori,docinenumerate(result["context"],1):print(f"[{i}]{doc.metadata.get('source','未知来源')}")

Streamlit 快速搭一个 RAG 界面

importstreamlitasst# 加载向量数据库(缓存避免每次刷新重建)@st.cache_resourcedefget_vectordb():returnChroma(persist_directory="./chroma_db",embedding_function=embeddings)# 构建 RAGst.title("📚 企业知识库问答")question=st.text_input("输入你的问题...")ifquestion:withst.spinner("搜索中..."):result=rag_chain.invoke({"input":question})st.markdown(f"**答案:**{result['answer']}")st.write("---")fori,docinenumerate(result["context"],1):st.caption(f"[{i}] 来源:{doc.metadata.get('source','?')}")

本章小结

概念要点
LCEL`
create_retrieval_chain检索+生成的完整 RAG 管道
Streamlit15 分钟搭一个 RAG UI

📌创作者:Yardon | 🏠个人网站:GlimmerAI.top

📖 本章是「LangChain + RAG 实战」系列的第 3 章。

🌟 欢迎大家来观看!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 10:05:53

从聊天到执行:AI Agent如何重塑人机交互与开发者新机遇

你有没有发现,最近打开 ChatGPT 的网页版,感觉有点不一样了?不是界面变了,而是那种“一问一答”的聊天感,正在被一种更主动、更“能干”的模式取代。过去,我们习惯性地把问题抛给它,然后等待一个…

作者头像 李华
网站建设 2026/7/4 10:21:03

Sunshine游戏串流服务器:打造你的终极跨平台游戏体验

Sunshine游戏串流服务器:打造你的终极跨平台游戏体验 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上玩PC游戏吗?Sunshine游戏串流服务器就…

作者头像 李华
网站建设 2026/7/4 11:44:31

MoeKoeMusic:如何用这款二次元音乐播放器打造个性化听歌体验

MoeKoeMusic:如何用这款二次元音乐播放器打造个性化听歌体验 【免费下载链接】MoeKoeMusic 一款开源简洁高颜值的酷狗第三方客户端 An open-source, concise, and aesthetically pleasing third-party client for KuGou that supports Windows / macOS / Linux / We…

作者头像 李华
网站建设 2026/7/4 1:47:24

从论文到简历:用enumitem宏包玩转LaTeX中的各种列表样式

从论文到简历:用enumitem宏包玩转LaTeX中的各种列表样式 在学术写作与技术文档创作中,列表是组织复杂信息的高效工具。但你是否遇到过这些困扰:参考文献的编号需要方括号样式,技能清单想用图标替代传统项目符号,多级嵌…

作者头像 李华