基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战

基于Apache Doris与SelectDB构建RAG及知识图谱增强的智能问答系统实战 这次我们来看一个基于 Apache Doris 和 SelectDB 构建的 AI 应用实战项目。它不是一个单一的模型或工具,而是一套完整的、可落地的技术方案,核心目标是解决大模型在回答复杂、专业问题时面临的“知识幻觉”和“信息碎片化”难题。简单说,就是教你如何用 Doris 这个高性能数据库,搭建一个从基础检索增强生成(RAG)到知识图谱增强的智能问答系统。 这个方案最值得关注的点在于,它没有停留在概念层面,而是提供了从环境准备、数据处理、向量入库、知识图谱构建到最终问答生成的完整代码流程。对于开发者而言 阅读详情

基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战

在本文中,我将详细介绍如何使用LangChain框架构建一个完整的RAG(检索增强生成)问答系统。通过向量检索获取相关上下文,并结合大语言模型,我们能够构建出一个能够基于特定知识库回答问题的智能系统。

1. 基础设置与向量检索准备

首先,我们需要导入必要的库并设置向量存储访问:

import os
from dotenv import load_dotenv
from langchain_core.output_parsers import StrOutputParser
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_redis import RedisConfig, RedisVectorStore

# 加载环境变量
load_dotenv()

# 定义查询问题
query = "我的生日是几月几日?"

# 初始化阿里云百炼平台的向量模型
embedding = DashScopeEmbeddings(model="text-embedding-v3", dashscope_api_key=os.getenv("ALY_EMBADING_KEY"))
redis_url = "redis://localhost:6379"  # Redis数据库的连接地址

# 配置Redis向量存储
config = RedisConfig(
    index_name="my_index2",  # 索引名称
    redis_url=redis_url,  # Redis数据库的连接地址
)

# 创建向量存储实例和检索器
vector_store = RedisVectorStore(embedding, config=config)
retriever = vector_store.as_retriever()

这部分代码完成了以下工作:

  • 加载环境变量以安全地使用API密钥
  • 初始化阿里云文本嵌入模型
  • 配置Redis向量数据库连接
  • 创建检索器(retriever),用于执行向量相似度检索

2. 执行向量检索

接下来,我们使用检索器从向量库中获取与查询相关的文本段落:

# 执行检索,获取相关文本段落
retriever_segments = retriever.invoke(query, k=5)
print(retriever_segments)

# 将检索结果整合
text = []
for segment in retriever_segments:
    text.append(segment.page_content)

在这段代码中:

  • retriever.invoke(query, k=5) 检索与查询语义最相关的5个文本段落
  • 我们将检索到的每个段落的文本内容提取并整合到一个列表中

3. 构建Prompt模板

我们需要设计一个提示模板,将检索到的相关信息和用户问题一起传递给大语言模型:

from langchain_core.prompts import ChatPromptTemplate

prompt_template = ChatPromptTemplate.from_messages(
    [
        ("system", """你是一个问答机器人,你的任务是根据下述给定的已知信息回答用户的问题
        已知信息:{context}
        用户问题:{query}
        如果已知问题不包含用户问题的答案,或者已知信息不足以回答用户的问题,请回答"抱歉,我无法回答这个问题。"
        请不要输出已知信息中不包含的信息或者答案。
        用中文回答用户问题
        """),
    ]
)

# 格式化prompt
prompt = prompt_template.invoke({"context": text, "query": query})
print(prompt.to_messages()[0].content)

这个提示模板:

  • 明确定义了AI助手的角色和任务
  • 设置了两个变量:{context}用于传入检索结果,{query}用于传入用户问题
  • 提供了清晰的回答指令,包括当信息不足时如何响应

4. 调用大语言模型获取回答

现在,我们使用LLM来生成基于上下文的回答:

from langchain_openai import ChatOpenAI

# 结果解析器,直接获取纯文本回复
parser = StrOutputParser()

# 初始化LLM模型接口
model = ChatOpenAI(base_url="https://openrouter.ai/api/v1", api_key=os.getenv("OPENAI_KEY"),
                   model="qwen/qwq-32b:free")

# 调用模型获取回答
result = model.invoke(prompt)
print(result)

这里我们:

  • 使用了OpenRouter平台上的通义千问模型
  • 通过model.invoke(prompt)将格式化后的提示发送给模型
  • 获取模型的文本响应

5. 构建完整的RAG链

最后,我们将把所有步骤整合成一个完整的LangChain处理链,实现端到端的RAG问答:

from operator import itemgetter

# 辅助函数:收集文档内容
def collect_documents(segments):
    text = []
    for segment in segments:
        text.append(segment.page_content)
    return text

# 构建完整的处理链
chain = ({
    "context": itemgetter("query") | retriever | collect_documents,
    "query": itemgetter("query")
} | prompt_template | model | parser)

# 设置新的查询并执行链
query = "你能帮助史可轩处理日常事务吗"
response = chain.invoke({"query": query})
print(response)

这个链式处理流程:

  1. 接收用户查询
  2. 执行向量检索获取相关上下文
  3. 将上下文和查询组合到提示模板中
  4. 调用LLM生成回答
  5. 解析并返回最终的文本响应

详细解析链式处理

让我们解析一下这个链式处理的构建方式:

chain = ({
    "context": itemgetter("query") | retriever | collect_documents,
    "query": itemgetter("query")
} | prompt_template | model | parser)

这个链式结构使用了LangChain的管道操作符 |,实现了以下流程:

  1. itemgetter("query") 从输入字典中提取查询文本
  2. 将查询传递给 retriever 执行向量检索
  3. collect_documents 函数处理检索结果,提取文本内容
  4. 将处理后的上下文和原始查询分别作为 context 和 query 传递给提示模板
  5. 提示模板格式化后的内容发送给LLM模型处理
  6. 最后通过 parser 解析LLM的响应,获取纯文本结果

总结

本文介绍了如何使用LangChain框架构建一个完整的RAG问答系统,主要包含以下步骤:

  1. 向量检索:从Redis向量数据库中检索与用户问题语义相似的文本段落
  2. 提示工程:设计合适的提示模板,将检索结果作为上下文与用户问题一起发送给模型
  3. 模型调用:利用LangChain的接口调用大语言模型生成答案
  4. 链式处理:使用LangChain的管道操作将各个组件整合成一个端到端的工作流

这种RAG架构具有很好的可解释性和可靠性,能够基于特定的知识库回答问题,避免了大语言模型"幻觉"问题,特别适合构建企业级知识问答系统、客服助手等应用。

通过向量检索提供相关上下文,我们可以让大语言模型更准确地回答特定领域的问题,同时也能降低知识更新的成本(只需更新向量库而无需重新训练模型)。这种方案在实际应用中具有很高的灵活性和可扩展性。

LangChain与Embeddings技术:构建高效RAG系统的核心组件 LangChain作为热门RAG框架,结合Embeddings技术构建智能应用。文章介绍了LangChain的核心功能、Embeddings技术原理,对比了Word2Vec、BERT等主流模型,并展示了LangChain如何集成不同Embedding接口。实践部分详细演示了基于本地文档构建问答系统的完整流程,包括数据预处理、Sentence-Transformers嵌入、Chroma向量存储及LangChain流程编排。该系统可实现高效语义检索和智能问答,体现了RAG框架在实际应用中的价值。 阅读详情

相关推荐

AI知识库实战:如何用LangChain构建智能问答系统?

当你面对企业海量的产品文档、内部政策,或是个人积累的数千条笔记时,是否曾希望有一个“智能助手”能像人类专家一样,快速准确地回答你的问题?比如:“我们公司的年假政策是怎样的?”“这个API接口的参数格式是什么?”“我去年写的关于LangChain的笔记里提到了哪些核心组件?传统搜索工具(如Elasticsearch)只能返回关键词匹配的文档片段,而纯大语言模型(如GPT-4)则可能生成“幻觉”答案(即没有事实依据的内容)。检索增强生成(RAG)

AI算力网络与通信的博客 1198

【LLM-RAG】知识库问答 | 检索 | embedding

RAG流程(写作论文中的background:公式设定、emb、召回内容、召回基准)(工作中的思路《A Survey on Retrieval-Augmented Text Generation》该工作旨在对检索增强文本生成进行研究。主要核心的点如下:1、Retrieval Source知识来源源 训练语料:有标注的训练数据直接作为外部知识;外部数据:支持提供训练数据之外的外部知识作为检索来源,比如于任务相关的领域数据,实现模型的快速适应; 无监督数据:前两种知识源都需要一定的人工标注来完善“检索依据-

发现问题,并解决问题,批判性思维 6193

RAG实战:解锁企业知识,用LangChain + Pinecone 构建智能问答系统

RAG 的核心思想是:在 LLM 生成答案之前,先从知识库中检索出与用户问题最相关的上下文信息,然后将这些信息与用户问题一起作为 Prompt 输入给 LLM,从而确保 LLM 的回答基于可靠的、最新的企业内部知识。这些向量在多维空间中捕捉文本的语义信息,相似的文本具有相近的向量。Pinecone: 作为一家领先的托管式向量数据库服务商,Pinecone 提供了高性能、高可用、可大规模扩展的解决方案,能够高效地存储和检索海量企业知识的向量表示,非常适合满足企业级应用对性能、易用性和管理的需求。

WSHAN_GEO的博客 845

基于 Lang Chain 的检索增强生成(RAG)问答系统

RAG”(Retrieval-Augmented Generation)是一个自然语言处理(NLP)技术,它旨在为大语言模型提供额外的,来自外部知识源的信息。主要用于提高语言模型的效果和准确性。这段代码实现了一个基于 LangChain 和 GPT-2 的检索增强生成(RAG)问答系统。TextLoader:加载和分割文档。HuggingFaceEmbeddings:生成文档的嵌入向量。OpenSearchVectorSearch:存储和检索向量数据。

weixin_59191169的博客 923

Langchain实战:构建高效的知识问答系统_langchain 问答助手

通过Langchain库,我们快速搭建出了一个基础的知识问答系统。不仅如此,Langchain还提供了丰富的模块和功能,使得开发者可以根据项目的需求定制问答系统。例如,我们可以使用不同的文档加载器、文本切割器和向量存储库,来适应不同类型和规模的数据。此外,Langchain还支持多种检索和问答模式,如Retrieval-augmented Generation (RAG)模式,使得我们能够构建出更为高级和复杂的知识问答系统。

2401_85377976的博客 1268

构建基于PDF文档的问答系统:使用Python和LangChain实现高效文档处理与信息检索

在现代信息化社会中,PDF文件是保存和传播重要信息的常用格式。这些文件中往往包含丰富的非结构化数据,如企业报告、研究论文和政府文件等。然而,由于其格式和内容的复杂性,直接使用传统的文本处理工具处理PDF文件存在一定困难。为了解决这一问题,本文将详细介绍如何利用Python和LangChain库,构建一个能够对PDF文档内容进行问答的系统。通过本文的讲解,您将学会如何加载PDF文档、将其内容转换为语言模型(LLM)可处理的格式,并构建一个检索增强生成(RAG)系统,能够高效回答与文档内容相关的问题。

m0_57781768的博客 1144

基于langchain实现LLM基础RAG金融知识问答

文章介绍了基于LangChain框架实现的基础RAG流程,让用户快速掌握大模型的知识库问答实现逻辑

qq_42735683的博客 2959

《AI应用架构师智能特征工程实践的前沿趋势解读》

面对传统方法的局限性,智能特征工程(Intelligent Feature Engineering)应运而生。智能特征工程是指利用人工智能、机器学习和自动化技术,实现特征提取、构造、选择和优化过程的自动化、智能化和可扩展化的方法和技术体系。效率提升:将数据科学家从繁琐的人工特征工程中解放出来,大幅缩短特征开发周期。质量保障:通过系统化方法发现人类难以察觉的特征模式,提高特征质量和模型性能。可扩展性:能够处理大规模、高维度和多类型的数据,适应不同领域和场景。降低门槛。

大数据洞察的博客 1181

Web开发者实战LangChain RAG:构建企业级知识库问答系统

在Web开发中,我们熟悉“数据 → 处理 → 展示”的经典流程:从前端表单收集用户输入,后端查询数据库,再将结果渲染成页面。而如今,当企业希望用自然语言查询内部文档(如产品手册、技术规范、HR政策),这套逻辑依然成立——只是“数据库”换成了向量数据库,“SQL查询”换成了语义搜索。 这就是 RAG(Retrieval-Augmented Generation) 的核心思想: 先从海量文档中检索出与问题最相关的片段,再将这些片段作为上下文喂给大模型,生成精准回答。对于Web开发者而言,RAG 并非全新

沛哥儿的专栏 1931

手把手教你学Simulink——基于Simulink的变换器老化预测与数字孪生(Digital Twin)

这不仅是技术的演进,更是从“事后救火”到“事前预言”的降维打击。:通过本文的实战演练,你不仅掌握了功率变换器“电气-热-老化”多物理场耦合的建模哲学,更深刻领悟了如何将高深的随机过程(粒子滤波)降维成可落地、可量产的工程工具;:起初,由于数据量少,粒子滤波器预测的剩余寿命(RUL)置信区间(95%)非常宽泛(如 1000~2000小时)。在工业4.0与智能制造的浪潮下,功率变换器(如光伏逆变器、车载OBC、服务器电源)不再是孤立的硬件,而是具备“自我感知”与“寿命预知”的智能节点。

MHD0815的博客 297

P+F--r2000激光雷达slam技术实现

P+F--r2000激光雷达slam技术实现

majingming123的博客 1667

用 DeepSeek 快速打造自己的 AI 系统(附完整代码)

今天,我将带你了解如何通过构建一个本地化的检索增强生成(RAG)系统,直接从文档中获取精准答案。通过结合和,你可以轻松实现这一目标,而无需依赖云服务,也能避免云 API 延迟的困扰。

m0_59164304的博客 1800

画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU

前言,什么是STM32F030F4P6 STM32目前最便宜的芯片之一应该就是这一块,STM32F030F4P6,这一个芯片没有USB,但是其他都有,引脚少,价格低廉,如果找不到原厂,可以买替代的国产芯片,性能也一样。 不管怎么样也是Cortex-M0,比8bit和16bit的性能都强,总的来说就是低价,引脚少,体积小的同时,还容易开发,有很多模拟输入可玩,还有SPI,硬件I2C等等 所以,这一款MCU真的是从理论来说又便宜又好用,非常适合把玩。 画个板,最小系统 STM32F030其..

arenascat的博客 2万+

第六章:框架实战:构建集成向量与图谱的 RAG 应用

通过具体的代码案例和详细的步骤说明,您将能够掌握使用这些框架搭建强大的 RAG 系统的能力,并了解如何调试和评估其性能。最后,我们还介绍了一些常用的 RAG 应用调试和评估技巧,并提供了使用 spaCy 进行简单三元组提取以及使用 Ragas 进行 RAG 评估的示例。知识图谱以结构化的方式存储实体及其之间的关系,可以提供更丰富的上下文信息和进行关系推理,从而提高检索的准确性和相关性。希望本章的内容能够为您提供一个良好的起点,鼓励您继续探索不同的 RAG 策略和框架,并根据您的具体应用场景进行创新和优化。

YPeng_Gao的博客 1402

【Go语言实战】(2) Gin+Vue 电子商城

618来!!不用纠结去哪里剁手了!直接自己安排一个商场不香吗??

面向生活编程 4827

【DexGraspNet与多指手抓取算法详解】第三章 DexGraspNet数据集构建机理

抓取姿态描述多指手与物体的相对空间关系,包含手掌位姿与手指关节配置。

VectorShift的博客 498

使用LangChain实现基于LLM和RAG的PDF问答系统

本篇主要介绍了通过Langchain工具包,来构造基于检索增强生成和大语言模型的PDF问答系统。由此可见,Langchain真的很强大,应用场景广泛。它的模块化设计、灵活性和扩展性使得它成为构建复杂 LLM 应用的理想选择。

weixin_45861152的博客 1688

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

共轭梯度法的核心原理是求解优化问题的共轭向量组作为优化方向,由于优化方向间彼此正交,故每次迭代只需沿着一个方向寻优而互不影响。本文设计基于ESDF的障碍约束、曲率约束和平滑约束,基于ROS C++和Python提供了共轭梯度法的轨迹优化实践案例

FRIGIDWINTER的博客 1万+

LangChain核心组件之-向量检索

本篇博文是笔者关于langchain框架学习的组件第二篇向量检索,包含langchain的三个组件 向量模型、向量库、向量检索器。这些组件都从概念,核心方法,代码示例以及相关高级用法。希望能够帮助学习langchain框架的有所帮助。因为设计的组件对应点比较多,请大家按需查看学习。

liushangzaibeijing的博客 1092

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

本地构建 RAG 应用的实践指南:使用 LangChain 进行检索增强生成

检索增强生成(RAG)是一类系统,它通过将从文档库中检索到的知识上下文整合到传统语言模型(LLMs,无论大小)中,从而在用户查询时生成更加准确和相关的响应。在这一背景下,LangChain 作为一个框架受到广泛关注,它简化了 RAG 应用的开发,提供了将 LLM 与外部数据源集成的编排工具,管理检索管道,并能够稳健且可扩展地处理不同复杂程度的工作流。

等风来 2912

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

快速入门指南: 使用LangChain的向量存储和检索器

准备好体验LangChain的魔力了吗?今天我们要探索的是向量存储和检索器抽象,这是LLM工作流中不可或缺的一部分。我们将揭开它们的神秘面纱,并看看它们如何帮助我们从数据库和其他数据源中检索数据,特别是在需要进行检索增强生成(RAG)时。这不仅是技术上的飞跃,也是让你的应用程序更智能、更高效的关键一步。

weixin_40726747的博客 1610

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

从 0 到 1 构建高效 RAG 问答系统:LangChain+Ollama+Chroma 实战指南

组件优势适用场景Ollama本地部署、模型丰富中小型企业 / 个人开发者Chroma轻量级、支持 HTTP 接口快速原型开发LangChain标准化组件、生态完善复杂 RAG 系统开发。

佑瞻的博客 2353

LangChain 1.0实战教程:基于RAG的LLM问答系统构建全攻略!

本文详细介绍了如何使用LangChain 1.0构建基于RAG的LLM问答系统。首先解释了RAG系统的核心概念:索引(加载、切分、存储文本数据)和检索与生成(检索相关数据并生成答案)。文章以Agentic RAG综述论文为数据集,展示了两种实现方式:RAG Agent(通用方案)和RAG Chain(简单查询高效方案)。通过本教程,读者可掌握从零开始构建RAG问答机器人的完整流程。

2401_85343303的博客 970

利用 LangChain 和 Neo4j 向量索引,构建一个RAG应用程序

向量索引是 Neo4j 的一个重要补充,使其成为处理 RAG 应用程序的结构化和非结构化数据的出色解决方案。希望 LangChain 集成能够简化将向量索引集成到现有或新的 RAG 应用程序中的过程,这样我们就不必担心细节。请记住,LangChain 已经支持生成 Cypher 语句并使用它们来检索上下文,因此我们现在可以使用它来检索结构化和非结构化信息。参考文献。

2201_75499313的博客 3423

第四章:RAG 基石 - 向量化、存储与基础检索

章节引导:欢迎进入 RAG(Retrieval-Augmented Generation)的核心模块!如果说 LLM 是一个知识渊博但记忆可能不实时或不全面的大脑,那么 RAG 就是为它配备了一个强大的外部“记忆系统”和“检索工具”,让它能随时查阅最新、最相关的信息来回答问题。本章将聚焦 RAG 的第一步,也是至关重要的基础——。

YPeng_Gao的博客 2411
上一篇: LangChain实战:文档加载、分割与向量存储详解
下一篇: RAG技术解析:实现高精度大语言模型知识增强
AI航海家(Ethan)
博客等级 码龄7年 477粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值