AIGC内容分享(三):AIGC应用:基于RAG构建个人知识库

这篇具有很好参考价值的文章主要介绍了AIGC内容分享(三):AIGC应用:基于RAG构建个人知识库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

Collect (收集)

收集是什么?

Organize (组织)

组织信息

Distill (提炼)

提炼信息

Express (表达)

表达见解

Finetune调优

调整输出内容

总结一下


前言

在信息爆炸的时代,如何有效地处理和汲取大量的信息成为一个关键的挑战,尤其对于知识工作者。如果有一个知识库就像外挂大脑一样,随时可以记录信息,组织管理形成知识,需要时可以随时调用,那生产力将成倍提升数倍。

CODE是Tiago Forte在《Building a Second Brain》书中提出的一种信息处理框架,用于更有效地管理和利用个人知识。借助CODE框架来讲述如何利用RAG(Retrieval-Augmented Generation,检索增强生成)技术搭建个人的知识库。CODE框架通常指的是:

• Collect: 收集信息和数据

• Organize: 组织和分类这些信息

• Distill: 检索提炼关键信息

• Express: 表达和共享知识

作为个人知识管理(PKM)领域具有重要影响力的专家,Tiago Forte提倡将知识管理视为一个动态而有机的过程,而不是仅仅是静态地存储和检索信息。通过收集、组织、提炼和表达的循环,个人可以不断地加深对信息的理解,发现新的联系,以及应用知识于实际工作和创造性活动。这个方法旨在帮助个体更好地应对信息过载,提高工作效率,同时激发创造性思维。

Collect (收集)

收集是什么?

收集各种形式的信息。这可以包括任何觉得有价值、有趣或有潜在用途的信息。这可能是从网络上找到的文章、书籍摘录、灵感、笔记、甚至是对话中的碎片化信息。

 文章来源地址https://www.toymoban.com/news/detail-784953.html

AIGC内容分享(三):AIGC应用:基于RAG构建个人知识库,AI(人工智能) 内容分享,AIGC 内容分享,AIGC

第一步:信息抓取,传统的爬虫程序需要针对某个页面的结构,一点点提取页面的信息。利用LLM这个过程要简单得多,虽然处理的过程不是特别完美,不如手动指定节点的方式,但效率高的不是一丁半点。基于LangChain实现:

from langchain.document_loaders import AsyncChromiumLoader
from langchain.document_transformers import BeautifulSoupTransformer

# Load HTML
loader = AsyncChromiumLoader(["https://www.wsj.com"])
html = loader.load()
# Transform
bs_transformer = BeautifulSoupTransformer()
docs_transformed = bs_transformer.transform_documents(html, tags_to_extract=["span"])

html2text = Html2TextTransformer()
docs_transformed = html2text.transform_documents(docs)
docs_transformed[0].page_content[0:500]

上面示例中HTML2Text提供了将HTML内容直接转换为纯文本(带有类似Markdown的格式),而无需进行特定标签操作的简单方法。适用于那些旨在提取可读文本而无需操纵特定HTML元素的情境,用于获取文档信息的场景就很适合,非格式化数据本身不要求非常严谨。

第二步:分割和嵌入,分割文档数据不是必须的,大部分情况下需要分割。主要是两方面原因,一是对于大文档,比如说一本书,只能分割成一个个小节进行存储。另一方面是为了更精确搜索出想要的内容,相关性比较强的内容作为一个文档存储,而相关性不强的则分开存。嵌入(embedding)是一个数学概念,简单点说,就是把文档向量化,把文档抽象转化成以数字表示的一个向量,后续就能用数学计算的方式,快速判断要查询的向量与待查向量的距离,从而实现基于语义的检索。OpenAI有Embedding的API,可以直接调用,存储和检索时必须使用相同的Embedding模型。

 

Organize (组织)

组织信息

收集到信息后,你需要将其组织成一个有序的结构。使用标签、文件夹、关键字等方式,将信息分类并建立关联。这有助于创建一个清晰的信息体系,使你能够更轻松地定位和理解存储的内容。建立适合个人需求的组织系统,确保它是直观和可持续的。

这一环节最关键也最困难,知识有内容分类,如技术类、个人成长、新闻等,也有时间维度,长期的、短期的,以及知识之间的关联关系,如个人对信息的一些解析标注。每个人对于知识的理解是不一致的,因此该环节的工作更像是艺术,而不是科学。

一种方式是,提前把个人的知识体系用类似思维导图整理好,定义好分类和标签,再把收录的信息做分类和标签。另一种方式,则是利用NLP和聚类的算法,自动进行组织。既然LLM这么强大,能否利用LLM的能力进行组织呢,微软发布的开源框架Autogen,通过编写AI Agent自动完成任务。我准备尝试一下。

 

Distill (提炼)

提炼信息

将大量的原始信息转化为更有价值、更易于理解和检索的形式,更好地利用收集到的信息,为后续的学习、决策和应用提供更好的基础。通过这个过程,你不仅加深对信息的理解,还能够从中获取出对你来说最有价值的内容。

意图理解,当用户输入查询信息时,不是所有时候都是要通过信息检索就能解决。这里可以增加一个AI Agent来处理用户意图理解的问题,闲聊 -> LLM直接生成答复,数学推理 -> 调用Wolfram插件,查询数据 -> 生成SQL或者调用Code Interpreter,只有当用户是需要检索知识库的时候,才进行。

信息检索,知识在使用之前,先要准确找到它。LLM接收查询的响应作为输入,因此搜索结果的质量是成功与否的决定因素。结果以表格行集的形式呈现,其构成和结构取决于以下因素:

a.用于确定响应中包含索引部分的字段。

b.表示索引匹配项的行。

LangChain文档中可以找到 Retrieval-augmented generation (RAG) 

https://python.langchain.com/docs/use_cases/question_answering

from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.llms import OpenAI
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma

loader = TextLoader("../../state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings()
docsearch = Chroma.from_documents(texts, embeddings)

qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=docsearch.as_retriever())
query = "What did the president say about Ketanji Brown Jackson"
qa.run(query)

这里检索最好使用语义(向量化)和关键词混合查询,效果要比单个查询方式好,但是比单独关键词搜索效果并没有太大的区别,为了支持语义查询做了大量的工作,有点尴尬。。。怀疑是我使用的文档类型都是某个行业新闻有关,这个还待研究。

 

Express (表达)

表达见解

表达阶段是将你对信息的理解、见解以及从中获得的知识表达出来的时候。这可以通过写作、绘图、演讲、制作演示文稿等方式进行。表达有助于巩固你的学习,同时也为与他人分享、合作和创造提供了平台。这个阶段是将个人学习和思考转化为实际行动和成果的关键步骤。

Prompt模版,LLM接收检索信息的返回,通过格式化模版,生成答案再返回给用户。以下是一个Prompt模版的示例,包含历史对话记录、当前问题回答、信息引用。

from langchain.prompts import ChatPromptTemplate, PromptTemplate

# Used to condense a question and chat history into a single question
condense_question_prompt_template = """Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language. If there is no chat history, just rephrase the question to be a standalone question.

Chat History:
{chat_history}
Follow Up Input: {question}
"""  # noqa: E501
CONDENSE_QUESTION_PROMPT = PromptTemplate.from_template(
    condense_question_prompt_template
)

# RAG Prompt to provide the context and question for LLM to answer
# We also ask the LLM to cite the source of the passage it is answering from
llm_context_prompt_template = """
Use the following passages to answer the user's question.
Each passage has a SOURCE which is the title of the document. When answering, cite source name of the passages you are answering from below the answer in a unique bullet point list.

If you don't know the answer, just say that you don't know, don't try to make up an answer.

----
{context}
----
Question: {question}
"""  # noqa: E501

LLM_CONTEXT_PROMPT = ChatPromptTemplate.from_template(llm_context_prompt_template)

# Used to build a context window from passages retrieved
document_prompt_template = """
---
NAME: {name}
PASSAGE:
{page_content}
---
"""

DOCUMENT_PROMPT = PromptTemplate.from_template(document_prompt_template)

Finetune调优

调整输出内容

使用自己的数据来微调LLM,使模型适用于自己的场景、自己的任务。比如生成内容符合自己的文章风格,或者输出风格一致的教程等。

微软在AI应用动作比较快,Azure出了不少相关的应用值得参考,ChatGPT +企业数据的Demo https://github.com/Azure-Samples/azure-search-openai-demo

通过这个CODE框架,Tiago Forte提倡将知识管理视为一个动态而有机的过程,而不是仅仅是静态地存储和检索信息。通过收集、组织、提炼和表达的循环,个人可以不断地加深对信息的理解,发现新的联系,以及应用知识于实际工作和创造性活动。这个方法旨在帮助个体更好地应对信息过载,提高工作效率,同时激发创造性思维。

总结一下

RAG这个应用方向是LLM众多应用中比较直接和明确的,相应的创业公司和大厂都会有相应的产品出来,不是很适合作为创业公司ALL IN。只要是场景明确,需求统一,那大厂分分钟都能把它做成基础设施。AI应用领域创业项目最好能有这几个特点:

离用户场景近,不管是ToB还是ToC,能直接看到效果的

不要求严谨,比如做广告营销内容,而医疗领域就很难

要容易算帐,帮研发提效的采购决策很慢,提升销量的决策就容易得多

 

到了这里,关于AIGC内容分享(三):AIGC应用:基于RAG构建个人知识库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AnythingLLM:基于RAG方案构专属私有知识库(开源|高效|可定制)

    继OpenAI和Google的产品发布会之后,大模型的能力进化速度之快令人惊叹,然而,对于很多个人和企业而言,为了数据安全不得不考虑私有化部署方案,从GPT-4发布以来,国内外的大模型就拉开了很明显的差距,能够实现的此路径无非就只剩下国内的开源大模型可以选择了。而

    2024年02月04日
    浏览(59)
  • AIGC内容分享(四十):生成式人工智能(AIGC)应用进展浅析

    目录 0   引言 1   以ChatGPT为代表的AIGC发展现状 1.1  国外AIGC应用发展现状 1.2  国内AIGC应用发展现状 2   AIGC的技术架构 (1)数据层 (2)算力基础设施层 (3)算法及大模型层 (4)AIGC能力层 (5)AIGC功能层 (6)AIGC应用层 3   AIGC面临的机遇与挑战 3.1  AIGC带来的机遇 (

    2024年02月19日
    浏览(55)
  • 分享AIGC场景应用及泰迪AIGC大模型师资培训内容

        什么是AIGC?  AIGC是内容生产方式的进阶,实现内容和资产的再创造。AIGC(AI-Generated Content)本质上是一种内容生产方式,即人工智能自动生产内容,是基于深度学习技术,输入数据后由人工智能通过寻找规律并适当泛化从而生成内容的一种方式。过往的内容创作生态主要

    2024年01月23日
    浏览(42)
  • AIGC内容分享(六十):拆解AIGC的基础及各行业应用

    目录 一、揭开AIGC的神秘面纱 二、为何2022年爆发AIGC? 1、文本类 2、图像类 3、音频类 4、视频类 三、AI对电商的影响 挖掘ChatGPT的潜力 举个例子:如果你想通过OpenAI平台创业 四、AIGC/GPT可以做什么 1、AIGC产业链 2、ChatGPT行业应用 3、AI应用的具体场景 AIGC将辅助/取代的工作方

    2024年01月24日
    浏览(43)
  • AIGC内容分享(二):全球大模型技术与应用分析

    目录 前言 人工智能技术回顾 AIGC近期动态梳理 1. 国内动态 2. 国外动态 3. OpenAI的关键动作 4. AIGC的技术变革  AIGC的关键应用 1. AIGC应用背后的驱动力 2. AIGC的三大原能力 3.  AIGC的四大产品形态 大模型如何融入行业? 1. 通用行业融合 2. 垂直行业融合 这篇文章主要阅读者是产品

    2024年01月16日
    浏览(54)
  • AIGC内容分享(十六):AIGC在商业化落地项目中的应用

    目录 前言 设计提效 项目前期分析 IP形象设计 主视觉设计 弹窗设计 海报设计 红包封面设计 有人这么形容现在的AI盛况——就像当年瓦特改良了蒸汽机,一时间各种“瓦特”如雨后春笋般冒了出来。 这一次,我们以“ 迎接2024年龙年 ”为主题,深度解析AIGC如何在具体项目中

    2024年01月16日
    浏览(60)
  • AIGC内容分享(三十三):AIGC“造浪”:创新应用爆发,钉钉为何先行一步?

    目录 前言  AI产业元年带来的变化与重构  AI如何深入产业、解决痛点?  智能时代的超级APP  结语 刚刚过去的2023年,可谓是AI产业发展的关键之年。 在这短短的一年内,AIGC(生成式人工智能,Artificial Intelligence Generated Content)就已经历了三波浪潮:第一波,以GPT为代表的大

    2024年01月21日
    浏览(53)
  • AIGC内容分享(二十):「AI视频生成」技术核心基础知识和模型应用

    目录 何为AI视频? 一、技术发展概况 二、代表模型及应用​​​​​​​ 三、仍存在许多技术难点 「 AI 视频」 通常指的是由人工智能(AI)技术生成或处理的视频。这可能包括使用深度学习、计算机视觉和其他相关技术来改善视频的质量、内容或生成全新的视频内容。一

    2024年01月18日
    浏览(53)
  • LLMs之RAG:LangChain-ChatGLM-Webui(一款基于本地知识库(各种文本文档)的自动问答的GUI界面实现)的简介、安装、使用方法之详细攻略

    LLMs之RAG:LangChain-ChatGLM-Webui(一款基于本地知识库(各种文本文档)的自动问答的GUI界面实现)的简介、安装、使用方法之详细攻略 目录 LangChain-ChatGLM-Webui的简介 1、支持的模型 LangChain-ChatGLM-Webui的安装 1、安装 T1、直接安装​ 环境准备 启动程序 T2、Docker安装 (1)、Docker 基础环境运

    2024年02月04日
    浏览(45)
  • LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe

    LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embedding模型m3e等+多种TextSplitter分词器)、安装(镜像部署【AutoDL云平台/Docker镜像】,离线私有部署+支持RTX3090 ,支持FAISS/Milvus/PGVector向量库, 基于

    2024年02月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包