LangChain实战入门(二):RAG实战——赋予大模型你的私有知识库

RAG架构实战:从LangChain到FastGPT的私有化知识库落地指南 检索增强生成(RAG)作为当前企业级AI应用的主流架构,通过将检索与生成两个阶段解耦,有效解决了知识更新成本、回答可控性和数据隐私安全等核心问题。其技术原理基于向量化检索与大模型生成的有机结合,在知识库系统、文档问答等场景中展现出显著优势。从工程实践角度,LangChain提供了标准化的组件连接框架,而Ollama则降低了本地大模型部署的门槛。对于需要快速落地的团队,FastGPT提供了开箱即用的低代码方案,但需根据具体业务需求权衡灵活性与开发效率。本文基于实际项目经验,详细拆解了从架构设计到生产部署的完整 阅读详情

让AI真正读懂你的文档,构建专属知识问答系统

开篇回顾与本期聚焦

在上一篇文章中,我们学习了LangChain的Model I/O模块(直达飞机),掌握了与模型对话的"正确姿势"。现在,我们的读书笔记生成器已经能基于模型的已有知识生成内容,但这还远远不够。

想象一下这些真实场景:

  • 你想让AI帮你分析公司内部的技术文档

  • 你需要从最新的行业报告中提取关键信息

  • 你想基于自己的读书笔记进行深度问答

这些都需要让模型能够访问它原本不知道的信息——这就是我们今天要解决的核心问题。

在本篇中,我们将解锁LangChain最强大的能力之一:Retrieval(检索),并构建一个真正能"读懂"你私有文档的智能问答系统。


一、基础理论:RAG与Retrieval模块

1. 什么是RAG?

RAG(Retrieval-Augmented Generation,检索增强生成) 是当前最流行的大模型应用范式。它的核心思想很简单:

当用户提问时,先从你的知识库中找到最相关的信息,然后将这些信息与问题一起交给大模型,让模型基于这些"参考资料"来生成答案。

这就好比开卷考试——模型不需要把所有知识都记在脑子里,但需要知道去哪里找答案。

2. LangChain的Retrieval模块核心组件

构建一个RAG系统,需要以下几个关键组件协同工作:

a) Document Loaders(文档加载器)

  • 作用:从各种来源加载文档(PDF、TXT、Word、网页等)

  • 示例:PyPDFLoader, TextLoader, WebBaseLoader

b) Text Splitters(文本分割器)

  • 为什么需要分割:大模型有上下文长度限制,长文档需要切成小块

  • 分割策略:按字符、按标记、按段落等,保持语义完整性

  • 示例:RecursiveCharacterTextSplitter

c) Embedding Models(嵌入模型)

  • 作用:将文本转换为数值向量( embeddings)

  • 原理:语义相似的文本会有相似的向量表示

  • 示例:OpenAI Embeddings、本地嵌入模型

d) Vector Stores(向量数据库)

  • 作用:存储文档向量,支持相似度搜索

  • 工作流程:存储文档块 + 查询时找到最相似的文档块

  • 示例:Chroma, FAISS, Pinecone

e) Retrievers(检索器)

  • 作用:封装整个检索流程,输入问题,返回相关文档

  • 类型:向量检索、关键词检索、混合检索

LangChain的检索模块通过将文档加载、分割并向量化存储后,根据用户查询检索最相关的文本片段,最终将其作为上下文提供给大语言模型以生成精确的答案。

核心提炼:文档 → 分割 → 向量化存储 → 检索 → 增强提示 → LLM生成答案。

整体处理流程


二、项目实战:构建个人文档智能问答系统

现在,让我们构建一个能理解个人文档的智能问答系统。

项目目标:上传PDF或TXT文档,然后可以像与人对话一样向文档提问,获得基于文档内容的准确回答。

技术栈:LangChain Retrieval模块 +  本地向量数据库

完整代码如下:

import os
from typing import List

import requests
from langchain.prompts import ChatPromptTemplate
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import PyPDFLoader, TextLoader

# ==================== 全局配置 ====================
# 聚合平台 http://www.ufunai.cn 配置
BASE_URL = "https://api.ufunai.cn/v1"
API_KEY = "sk-xxxxx"  # 替换为你的API密钥
MODEL_NAME = "gpt-4"  # 指定要测试的模型名称


# 1. 自定义HTTP模型类(复用上篇代码)
class HTTPChatModel:
    def __init__(self, base_url: str, api_key: str, model: str = "gpt-4"):
        self.base_url = base_url
        self.api_key = api_key
        self.model = model

    def invoke(self, messages: list) -> str:
        headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {self.api_key}"
        }

        payload = {
            "model": self.model,
            "messages": messages,
            "temperature": 0.1,  # 降低随机性,让回答更准确
            "max_tokens": 800
        }

        try:
            response = requests.post(
                f"{self.base_url}/chat/completions",
                headers=headers,
                json=payload,
                timeout=60
            )
            response.raise_for_status()
            result = response.json()
            return result["choices"][0]["message"]["content"]

        except requests.exceptions.RequestException as e:
            print(f"HTTP请求错误: {e}")
            if hasattr(e, 'response') and e.response is not None:
                print(f"响应内容: {e.response.text}")
            raise


# 2. 自定义HTTP嵌入模型类
class HTTPEmbeddingModel:
    def __init__(self, base_url: str, api_key: str):
        self.base_url = base_url
        self.api_key = api_key

    def embed_documents(self, texts: List[str]) -> List[List[float]]:
        """为多个文本生成嵌入向量"""
        headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {self.api_key}"
        }

        embeddings = []
        for text in texts:
            payload = {
                "input": text,
                "model": "text-embedding-ada-002"  # 或您使用的嵌入模型
            }

            try:
                response = requests.post(
                    f"{self.base_url}/embeddings",
                    headers=headers,
                    json=payload,
                    timeout=30
                )
                response.raise_for_status()
                result = response.json()
                embeddings.append(result["data"][0]["embedding"])
            except Exception as e:
                print(f"生成嵌入向量失败: {e}")
                raise

        return embeddings

    def embed_query(self, text: str) -> List[float]:
        """为单个查询文本生成嵌入向量"""
        return self.embed_documents([text])[0]


# 3. 简单的内存向量存储
class SimpleVectorStore:
    def __init__(self, embedding_model):
        self.embedding_model = embedding_model
        self.documents = []
        self.embeddings = []

    def add_documents(self, documents: List[str]):
        """添加文档到向量存储"""
        print("正在生成文档向量...")
        self.documents.extend(documents)
        new_embeddings = self.embedding_model.embed_documents(documents)
        self.embeddings.extend(new_embeddings)
        print(f"成功添加 {len(documents)} 个文档块")

    def similarity_search(self, query: str, k: int = 3) -> List[str]:
        """相似度搜索,返回最相关的k个文档"""
        from sklearn.metrics.pairwise import cosine_similarity
        import numpy as np

        # 生成查询向量
        query_embedding = self.embedding_model.embed_query(query)
        query_embedding = np.array(query_embedding).reshape(1, -1)

        # 计算相似度
        doc_embeddings = np.array(self.embeddings)
        similarities = cosine_similarity(query_embedding, doc_embeddings)[0]

        # 获取最相似的文档
        most_similar_indices = similarities.argsort()[-k:][::-1]
        return [self.documents[i] for i in most_similar_indices]


# 4. 文档处理流程
def process_document(file_path: str) -> List[str]:
    """加载并分割文档"""

    # 根据文件类型选择加载器
    if file_path.lower().endswith('.pdf'):
        loader = PyPDFLoader(file_path)
    else:
        loader = TextLoader(file_path, encoding='utf-8')

    documents = loader.load()
    print(f"成功加载文档,共 {len(documents)} 页")

    # 分割文本
    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000,  # 每个块的大小
        chunk_overlap=200,  # 块之间的重叠
        length_function=len,
    )

    chunks = text_splitter.split_documents(documents)
    chunk_texts = [chunk.page_content for chunk in chunks]
    print(f"文档分割完成,共 {len(chunk_texts)} 个文本块")

    return chunk_texts


# 5. 初始化组件
print("初始化组件...")
chat_model = HTTPChatModel(
    base_url=BASE_URL,
    api_key=API_KEY,
    model="gpt-4"
)

embedding_model = HTTPEmbeddingModel(
    base_url=BASE_URL,
    api_key=API_KEY
)

vector_store = SimpleVectorStore(embedding_model)


# 6. 构建RAG问答链
def create_rag_chain():
    """创建RAG问答链"""

    template = """
你是一个专业的文档分析助手。请基于以下上下文信息回答问题。如果上下文信息中没有答案,请如实告知,不要编造信息。

上下文信息:
{context}

问题:{question}

请根据上下文信息提供准确的回答:
"""

    prompt = ChatPromptTemplate.from_template(template)

    def rag_chain(question: str, context: List[str]) -> str:
        # 构建提示词
        context_text = "\n\n".join(context)
        formatted_prompt = prompt.format(context=context_text, question=question)

        # 调用模型
        messages = [
            {"role": "system", "content": "你是一个专业、准确的文档分析助手。"},
            {"role": "user", "content": formatted_prompt}
        ]

        response = chat_model.invoke(messages)
        return response

    return rag_chain


# 7. 主程序
def main():
    # 处理文档
    file_path = "sample.pdf"  # 替换为您的文档路径
    if not os.path.exists(file_path):
        # 如果没有文档,创建一个示例文档
        with open("sample.txt", "w", encoding="utf-8") as f:
            f.write("""
LangChain是一个用于开发由语言模型驱动的应用程序的框架。
它允许开发者将语言模型与外部数据源连接起来,并与之交互。
LangChain的主要价值在于:它能够将语言模型与数据源连接起来,并允许语言模型与它们的环境交互。

LangChain的核心模块包括:
1. Model I/O: 负责与语言模型交互
2. Retrieval: 用于从外部数据源检索信息  
3. Agents: 允许语言模型决定采取什么行动
4. Chains: 将多个组件组合成工作流
5. Memory: 在对话之间持久化状态
6. Callbacks: 进行日志的打印、监控,以及流式传输等其他任务。

RAG(检索增强生成)是LangChain的一个重要应用场景。
它通过从知识库中检索相关信息,然后基于这些信息生成回答,从而提高了回答的准确性。
            """)
        file_path = "sample.txt"
        print("已创建示例文档:sample.txt")

    print("开始处理文档...")
    chunks = process_document(file_path)

    # 构建向量存储
    print("构建向量数据库...")
    vector_store.add_documents(chunks)
    print("向量数据库构建完成!")

    # 创建RAG链
    rag_chain = create_rag_chain()

    # 交互式问答
    print("\n 文档问答系统已就绪!")
    print("输入您的问题(输入'退出'结束对话)")

    while True:
        question = input("\n您的问题:").strip()
        if question.lower() in ['退出', 'exit', 'quit']:
            break

        if not question:
            continue

        print("正在检索相关信息...")
        # 检索相关文档块
        relevant_docs = vector_store.similarity_search(question, k=3)

        print("生成回答...")
        # 基于检索到的文档生成回答
        answer = rag_chain(question, relevant_docs)

        print(f"\n 基于文档的回答:")
        print(f"{answer}")

        # 显示参考来源(可选)
        print(f"\n 参考了 {len(relevant_docs)} 个文档块")


if __name__ == "__main__":
    main()

代码深度解析:

  1. 自定义HTTP嵌入模型 (HTTPEmbeddingModel):

    • 通过HTTP调用嵌入模型API,将文本转换为向量

    • 支持批量处理文档和单个查询

  2. 简易向量存储 (SimpleVectorStore):

    • 使用内存存储文档和向量

    • 基于余弦相似度实现检索功能

    • 避免引入复杂的向量数据库依赖

    • 文档解析及文档检索使用相同的向量模型

  3. 文档处理流水线 (process_document):

    • 自动识别文档类型(PDF/TXT)

    • 智能分割文本,保持语义连贯性

    • 处理长文档的分块策略

  4. RAG问答链 (create_rag_chain):

    • 将检索到的文档作为上下文注入提示词

    • 确保回答严格基于提供的文档内容

    • 防止模型"幻觉"(编造信息)

运行效果演示:

初始化组件...
已创建示例文档:sample.txt
开始处理文档...
成功加载文档,共 1 页
文档分割完成,共 1 个文本块
构建向量数据库...
正在生成文档向量...
成功添加 1 个文档块
向量数据库构建完成!

 文档问答系统已就绪!
输入您的问题(输入'退出'结束对话)

您的问题:LangChain是什么, 用通俗易懂的方式给我讲一下
正在检索相关信息...
生成回答...

 基于文档的回答:
LangChain是一个开发框架,专门用于创建由语言模型驱动的应用程序。简单来说,它就像是一个工具箱,帮助开发者将智能语言模型(比如聊天机器人或自动回复系统)与外部的数据源(如数据库或互联网信息)连接起来。这样,语言模型不仅可以“说话”,还能根据外部信息来“思考”和做出更加智能的回应。

LangChain的核心功能包括与语言模型的交互、从外部数据源检索信息、决定采取何种行动、将多个功能组合成一个流程、在对话中保持记忆以及执行日志打印和监控等任务。通过这些功能,LangChain能够让语言模型在提供回答时更加精准和有用。

 参考了 1 个文档块

三、高级优化技巧

在实际应用中,我们可以进一步优化这个系统:

1. 混合检索策略

# 结合向量检索和关键词检索
def hybrid_search(query: str, k: int = 3):
    # 向量检索
    vector_results = vector_store.similarity_search(query, k=k)

    # 关键词检索(简单实现)
    keyword_results = []
    for doc in vector_store.documents:
        if any(keyword.lower() in doc.lower() for keyword in query.split()):
            keyword_results.append(doc)

    # 合并结果并去重
    all_results = vector_results + keyword_results
    return list(dict.fromkeys(all_results))[:k]

实际场景可以结合其他数据库和外挂知识库的数据一起来整合检索结果!

2. 重新排序优化

在初步检索后,使用更精细的模型对结果进行重新排序,提升最相关文档的排名。

3. 元数据过滤

为文档块添加元数据(如章节、日期等),支持基于元数据的过滤检索。

高级优化技巧,大家可以拿实际场景自己去尝试!


四、总结与预告

通过本篇的学习,我们成功构建了一个完整的RAG系统,让大模型能够基于私有知识库进行智能问答。

本篇核心收获:

  • RAG范式:理解了检索增强生成的完整流程和价值

  • Retrieval模块:掌握了文档加载、分割、向量化、检索的全套工具

  • HTTP集成:学会了用纯HTTP请求构建完整的AI应用

  • 实战能力:具备了构建私有知识问答系统的实际技能

生产环境建议:

  • 对于正式项目,建议使用专业的向量数据库(Chroma、Pinecone等)

  • 添加错误处理和重试机制,提高系统稳定性

  • 考虑缓存机制,减少重复的嵌入计算

下一篇预告:现在,我们的系统已经能够"查阅资料"来回答问题。但如果我们想让AI不仅会查资料,还能主动使用工具——比如上网搜索、执行计算、操作数据库——那该怎么办?

在《LangChain实战入门(三):Agents实战——让AI成为能思考、会行动的数字员工》中,我们将探索LangChain最令人兴奋的Agents模块,打造能够自主使用工具的AI智能体!

另:需要源码的同学,请关注微信公众号(优趣AI)在留言区评论获取!!!

创作不易,码字更不易,如果觉得这篇文章对你有帮助,记得点个关注、在看或收藏,给作者一点鼓励吧~

【langchain入门】使用​​langchain​​搭建自己的本地知识库系统 RAG是的缩写,翻译为中文的意思就检索增强,以基于最新,最准确的数据建立LLM的语料知识库。LLMLangChain是一个用于开发由语言模型驱动的应用程序的框架。具有上下文感知能力:将语言模型与上下文源(提示说明、少量镜头示例、基于其响应的内容等)联系起来。原因:依靠语言模型进行推理(关于如何根据提供的上下文回答,采取什么行动等)更多的介绍可以去官网:Introduction | 🦜️🔗 Langchain代码语言:javascriptimport os。 阅读详情

相关推荐

【AI大模型应用开发】3.2 RAG实战 - RAG应用+UI实现加载本地文件并对话

前面我们实现了RAG基本流程,今天我们在此基础上给它加个UI界面,在浏览器打开,实现上传本地文件、解析,并用大模型实现与该文档的对话。也就是一个阉割版demo版的ChatPDF或知识库对话系统。

同学小张的博客 3054

万字长文!RAG的实战指南及探索之路

RAG(Retrieval Augmented Generation,检索增强生成 )方法是指结合了基于检索的模型和生成模型的能力,以提高生成文本的质量和相关性。该方法是Meta在2020年发表的文章《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出的,该方法让LM(Language Model,语言模型)能够获取内化知识之外的信息,并允许LM在专业知识库的基础上,以更准确的方式回答问题。

Z4400840的博客 1837

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

RAG实战1 - 使用Mistral-7b, LangChain, ChromaDB搭建自己的WEB聊天界面

一、RAG介绍 二、安装python环境以及相关的包 三、导入相关包 四、Mistral-7b模型介绍 五、Embedding模型 六、Prompt Template 七、数据加载 八、数据注入 九、查询 十、问答 十一、基于Gradio搭建问答UI界面

小然的百宝盒 1399

最大似然估计、梯度下降、EM算法、坐标上升

主要讲解的是机器学习中参数学习算法之间的区别,以及应用的场景。 最大似然估计: 其中目标函数是对数似然函数。为了求目标函数取最大值时的theta。有两个关机键步骤,第一个是对目标函数进行求导,第二个是另导数等于0,求解后直接得到最优theta。两个步骤缺一不可。 梯度下降: 对目标函数进行求导,利用导函数提供的梯度信息,使参数往梯度下降最快的方向移动一小步,来更新参数。为什

tzl2093的博客 5141

ClickHouse集群扩容实战:用clickhouse-copier搞定数据迁移与分片重平衡

本文详细介绍了使用clickhouse-copier工具实现ClickHouse集群从3分片到5分片的平滑扩容实战。通过分片级并行处理、原子性保证等核心机制,该工具能高效完成数据迁移与分片重平衡,同时保持服务连续性。文章涵盖集群拓扑规划、表结构检查、迁移配置、执行监控及迁移后优化等关键步骤,为大数据量场景下的ClickHouse扩容提供完整解决方案。

weixin_29091837的博客 294

RAG实战全解析:一年探索之路

RAG(Retrieval Augmented Generation,检索增强生成 )方法是指结合了基于检索的模型和生成模型的能力,以提高生成文本的质量和相关性。该方法是Meta在2020年发表的文章《》中提出的,该方法让LM(Language Model,语言模型)能够获取内化知识之外的信息,并允许LM在专业知识库的基础上,以更准确的方式回答问题。而在大模型时代,它更是用于解决幻觉问题、知识时效问题、超长文本问题等各种大模型本身制约或不足的必要技术。

m0_63171455的博客 1565

深度学习的unfold操作

对于彩色图像这样的三维数据,unfold操作会对每个通道分别进行上述的二维展开操作。例如,一个 RGB 图像,在对其进行unfold操作时,红色通道、绿色通道和蓝色通道的数据都会被独立地按照定义的窗口和步长展开,然后将这些展开后的通道数据按照原来的通道顺序组合在一起,形成新的张量。与我们熟悉的卷积类似,unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动,不同的是,卷是滑动后与核求乘积(所以取名为卷积),而unfold滑动后不求乘积,是将窗口内的数据展开。

xulibo5828的博客 2167

高质量RAG的常用优化策略实战项目,落地必看 !!!

检索增强生成(RAG,Retrieval-Augmented Generation)是一种结合信息检索与生成模型的强大方法,用于生成准确且上下文相关的回答。网络上的实战眼花缭乱,先进的RAG高质量实战汇总却少之又少,阿东带你了解22种advanced RAG。 本文将介绍 22 种先进的RAG技术,灵感来源于 all-rag-techniques 仓库中的全面实现。这些实现使用 Python 库(如 NumPy、Matplotlib 和 OpenAI 的嵌入模型),避免使用 LangC

2401_84204413的博客 1304

Android 集成 Google 与 Facebook 第三方登录实战详解(2024版)

本文详细介绍了2024年Android应用集成Google与Facebook第三方登录的完整实战指南。通过分步教程和代码示例,帮助开发者快速实现一键登录功能,提升用户体验和注册转化率,同时涵盖隐私合规和常见错误处理的最佳实践。

blue的专栏 822

ArcGIS-裁剪遥感影像及dem图像

6、选择【工具箱】-【数据管理工具】-【栅格】-【裁剪】。在【输入栅格】里选择要裁剪的dem,在【输出范围】里选择刚创建的裁剪范围。选择一个输出路径,其他参数保存默认。2、起一个名称,要素类型选择【面】。点击【编辑】选择与要裁剪的dem一致的地理坐标系。1、创建需要裁剪区域的面层shp,右击选择【新建】-【shapefile】3、点击编辑器,选择开始编辑。4、选择【裁剪范围】,点击确定。5、画出想要裁剪的范围并保存。

siwenaiyou的博客 1万+

LangChain4j入门AI(八)使用RAG增加私有知识库

本文探讨了如何结合检索增强生成(RAG)技术来维护私有领域的专有数据。介绍了RAG的具体实现流程,包括文档预处理、向量嵌入生成、用户查询检索、Prompt构造及大模型调用等步骤,并提供了RAG的优化方案和前置准备,如向量数据库的注册与配置。最后,通过实际案例验证了RAG在私有知识库中的应用效果。

持续学习ing 2682

Raspberry Pi Pico + Inmp441麦克风(Pio模拟I2s)<2>

摘要:本文介绍了在Raspberry Pi Pico上使用PIO(Programmable I/O)接收I2S数字麦克风音频数据并保存为WAV文件的方法。项目采用双PIO状态机设计,一个生成I2S时钟信号(WS+SCK),另一个接收24位左声道数据并转换为16位格式。文章详细说明了接线方式、参数设置、WAV文件头构造、PIO汇编程序实现以及数据转换处理流程。项目在MicroPython环境下实现16kHz采样率、6秒时长录音,具有时序精确、稳定可靠的特性,并提供了进一步拓展的可能性,如双声道支持、实时频谱分

技术需要沉淀,需要碰撞。 660

从零搭建个人私有知识库 RAG 实战(附完整代码)

RAG(Retrieval-Augmented Generation):检索增强生成,简单说就是 「先从你的私有数据里找答案,再让大模型基于找到的内容回答」。通过这篇教程,你掌握了:✅ RAG 的核心逻辑和落地流程✅ 用 LangChain+Chroma 搭建私有知识库的完整代码✅ 生产级优化技巧(缓存、异常处理、中文适配)✅ 解决大模型幻觉、私有数据问答的核心方案。

weixin_42298314的博客 1万+

CTK Plugin Framework插件框架学习1--Qt编译CTK

【代码】Qt编译CTK。

贝勒里恩的博客 7433

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

25.7k star! 用langchain-chatchat部署私有化RAG知识库

该项目支持市面上主流的本地大语言模型和Embedding模型,支持开源的本地向量数据库。

2301_81940605的博客 1364

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RAG:实现基于本地知识库结合大模型生成(LangChain4j快速入门#1)

LangChain 是一个开源框架,用于帮助开发者构建基于 大型语言模型(LLM) 的应用程序,特别是那些需要与外部数据源进行交互的应用。LangChain是python版本的,javaer基于LangChain也做了一套java版本,故名LangChain4j(LangChainForJava),很多xxx4j也是这么取名的。LangChain 使得用户能够将语言模型与各种外部资源(如数据库、API、搜索引擎、知识库等)结合起来,进行更复杂的任务,如 检索增强生成(RAG)、对话系统、文档理解等。

CodeCodeBond的博客 3648

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

手把手教你,从零开始用langchain-chatchat部署私有化RAG知识库_langchain rag 知识库

angchain-chatchat是一个基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目,采用Apache License,可以免费商用。该项目支持市面上主流的本地大语言模型和Embedding模型,支持开源的本地向量数据库。①人工智能/大模型学习路线②AI产品经理资源合集③200本大模型PDF书籍④超详细海量大模型实战项目⑤LLM大模型系统学习教程⑥640套-AI大模型报告合集⑦从0-1入门大模型教程视频。

qingkahui24689的博客 2103

25.7k star! 用langchain-chatchat部署私有化RAG知识库,大模型入门到精通,收藏这篇就足够了!

langchain-chatchat是一个基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目,采用Apache License,可以免费商用。

瓦罗兰特顶级C位的博客 743

用外接知识库武装大模型:基于Deepseek、Ollama、LangChain的RAG实战解析

大语言模型(LLM)虽具备广泛的知识覆盖,但在垂直领域或时效性、主观性较强的场景中仍显不足。本文将通过一个导游知识问答系统的代码案例,展示如何利用LangChain框架与Deepseek本地化大模型(Ollama),结合外部知识库(RAG技术),实现精准的领域知识增强。

一个AI从业者的博客 1583

大模型RAG实战 | 基于LangChain实现RAG应用

OpenAI于2022年11月30日发布的ChatGPT几乎颠覆了现有的NLP范式, 使NLP算法的日常工作和技术栈都发生了一定的改变。最受关注的两个 落地方向分别为RAG(Retrieval-Augmented Generation,检索增强生 成)和Agent。

老皮的博客 1000

RAG应用实践-基于大模型构建知识库(Java版本)

目前大部分基于大模型的应用都是用python写的,本文使用java实现一个基于大模型的知识库(RAG系统)。

2301_82275412的博客 2505

【大模型实战】LangChain+RAG实战:从零构建大模型知识库问答系统!

本文介绍了使用LangChain框架构建RAG系统解决大模型幻觉问题的方法。教程涵盖环境配置、文档处理、向量数据库构建、大模型接入和问答链构建等步骤,通过LangChain组件与向量数据库结合,实现端到端问答任务,提升大模型回答准确性,包含具体代码实现和效果展示,适合开发者参考学习。

Trb701012的博客 862

大模型知识库RAG框架,比如LangChain、ChatChat、FastGPT等等,哪个效果比较好

在RAG(Retrieval-Augmented Generation)大模型知识库构建领域,当前主流框架如LangChain、ChatChat、FastGPT等各具优势。LangChain生态成熟、可扩展性强,ChatChat部署便捷、适合本地私有化应用,FastGPT响应速度快、适合企业级部署。如果追求高度定制化和生态集成,LangChain表现出色;若注重国产化支持和开箱即用,ChatChat更为合适;FastGPT则在吞吐量和API能力上有明显优势,非常适合构建对外服务接口。以LangChain为例

柚橙论 1514
上一篇: LangChain实战入门(一):告别“裸调”API,从Model I/O开始优雅构建AI应用
下一篇: LangChain实战入门(三):Agents实战——让AI成为能思考、会行动的数字员工
softkit
博客等级 码龄15年 61粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

softkit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值