打开AI世界的大门

奔赴山海,保持热爱

LangChain 中的链(Chains)类型及示例

LangChain 提供了多种类型的链(Chains),用于将多个组件组合起来完成复杂任务。以下是主要的链类型及示例:

1. LLMChain(基础链)

最基本的链类型,将提示模板、LLM和输出解析器组合在一起。

1
2
3
4
5
6
7
8
9
10
11
12
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI

prompt = PromptTemplate(
input_variables=["product"],
template="为{product}写一个创意广告文案:"
)
llm = OpenAI(temperature=0.9)
chain = LLMChain(llm=llm, prompt=prompt)

print(chain.run("环保水杯"))
阅读全文 »

提示词概述

提示词工程(Prompt Engineering),旨在通过开发和优化提示来有效利用语言模型的潜力。

提示词工程是为生成式 AI 模型设计输入以获取最佳输出的实践。 这些输入被称为提示词(Prompt)

提示词工程核心理念是,通过提供更优质的输入,可以让生成式 AI 模型(如大型语言模型)生成更符合需求的结果,也就是让模型能够更好地执行各种任务 ,包括生成创作,生成代码,聊天互动等。

阅读全文 »

RAG的生成流程

生成流程中,首先需要组合指令,指令将携带查询问题及检索到的相关信息输入到大模型中,由大模型理解并生成最终的回复,从而完成整个应用过程。

在这个过程中,有两个环节直接影响RAG系统的生成效果:

1. 大模型的选择:大模型相当于RAG系统的大脑,决定着RAG系统的响应质量。

2. 提示词工程:通过有效的指令的设计和组合,可以帮助大模型更好的理解内容和生成更加精确和相关的回答。

阅读全文 »

ChatDev、MetaGPT 等多智能体框架是近年来在人工智能领域,特别是多智能体系统(Multi-Agent Systems, MAS)和生成式 AI 领域的重要进展。这些框架旨在通过多个智能体(Agents)的协作,完成复杂的任务或生成高质量的内容。以下是对这些框架的简要介绍和对比:


阅读全文 »

将社区版迁移至 v1.x.x(0.15.x版本迁移至1.x.x版本)

链接:https://docs.dify.ai/development/migration/migrate-to-v1

小版本升级参考如下:

  • 进入dify源码的docker目录,执行以下命令:
1
2
3
4
5
6
7
8
cd dify/docker
cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak #备份compose文件(可选)
docker compose down
git checkout main
git pull origin main
tar -cvf volumes-$(date +%s).tgz volumes # 备份数据(可选)
docker compose pull
docker compose up -d
  • 同步环境变量配置(重要)

去到dify/docker目录下,查看.env.example文件的更新日期判断是否已更新

如果.env.example文件已更新,请确保相应地修改本地的.env文件。

根据需要检查并修改.env文件中的配置项,以确保它们与您的实际环境相匹配。您可能需要添加任何新变量从.env.example到.env文件中,并更新任何已更改的值。

重排序(Reranking)的目的是将混合检索的结果进行整合,并将与用户问题语义最契合的结果排在前列。

下图中仅仅混合检索,由于缺乏有效的排序,我们期望的结果位于第一和第四位,尽管依然可以被检索到,但理想情况下,如果检索方式更为精确,该结果应该被优先排序在前两位。

阅读全文 »

为什么需要混合检索?

我们本节课正式开始讲解 RAG 检索流程。当前主流的 RAG 检索方式主要采用向量检索(Vector Search),通过语义相似度来匹配文本切块。这种方法在我们之前的课程中已经深入探讨过了。然而,向量检索并非万能,它在某些场景下无法替代传统关键词检索的优势。

例如,当你需要精准搜索某个订单 ID、品牌名称或地址,或者搜索特定人物或物品的名字(如伊隆·马斯克、iPhone 15)时,向量检索的准确性往往不如关键词检索。此外,当用户输入的问题非常简短,仅包含几个单词时,比如搜索缩写词或短语(如 RAG、LLM),语义匹配的效果也可能不尽理想

这些正是传统关键词检索的优势所在。关键词检索(Keyword Search)在几个场景中表现尤为出色:精确匹配,如产品名称、姓名、产品编号;少量字符的匹配,用户习惯于输入几个关键词,而少量字符进行向量检索时效果可能较差;以及低频词汇的匹配,低频词汇往往承载了关键意义,如在“你想跟我去喝咖啡吗?”这句话中,“喝”“咖啡”比“你”“吗”更具重要性。

阅读全文 »

在前面的课程中,我们已经学习了 RAG 检索流程中如何将文档数据解析、分块并转换为嵌入向量的操作。本节课将进一步掌握如何存储这些向量及其文档元数据,并高效地进行相似度检索。

在人工智能(AI)主导的时代,文字、图像、语音、视频等多模态数据的复杂性显著增加。由于这些数据具有非结构化和多维特征,向量表示能够有效表示语义和捕捉其潜在的语义关系,促使向量数据库成为存储、检索和分析高维数据向量的关键工具。

阅读全文 »

嵌入模型(Embedding Model)负责将文本数据映射到高维向量空间中,将输入的文档片段转换为对应的嵌入向量(embedding vectors)。这些向量捕捉了文本的语义信息,并被存储在向量库(VectorStore)中,以便后续检索使用。用户查询(Query)同样通过嵌入模型的处理生成查询嵌入向量,这些向量用于在向量数据库中通过向量检索(Vector Retrieval)匹配最相似的文档片段。根据不同的场景需求,评估并选择最优的嵌入模型,以确保 RAG 的检索性能符合要求。

阅读全文 »

这些插件是 markdown-it 的扩展插件,用于增强 Markdown 的功能。以下是每个插件的功能说明和使用方法:


1. markdown-it-footnote

  • 功能:支持脚注功能。

  • 用法

    1
    2
    3
    这是一个带有脚注的文本[^footnote]。

    [^footnote]: 这是脚注内容。
  • 效果
    这是一个带有脚注的文本[1].


阅读全文 »
0%