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

企业级RAG本地知识库智能问答系统搭建指南(Ollama+LLM+Embedding全流程) 本文介绍了基于Ollama+LLM+Embedding的企业级RAG系统实现方案。系统采用分层架构设计,整合大语言模型(Qwen2/Llama3)、向量数据库(Chroma)和Embedding模型(BAAI/bge-large-en),通过LangChain框架构建完整的检索-生成流程。详细说明了本地部署方法、核心代码实现(文档处理、向量存储、RAG检索)以及系统优化策略(混合检索、分块优化)。系统支持多模型动态切换和监控告警功能,具有容器化部署、混合检索优化等特点,为企业知识管理提供高效解决方案。后续可 阅读详情

note

  • RAG流程(写作论文中的background:公式设定、emb、召回内容、召回基准)(工作中的思路:嵌入模型、向量存储、向量存储检索器、LLM、query改写、RAG评测方法)
  • 仅为个人关于RAG的一些零碎总结,持续更新中。
文章目录
  • note
  • 一、常见本地知识库问答流程
    • 1 整体框架
    • 2. 文本切分
    • 3. 图解流程
  • 二、相关RAG综述/工作
    • 一篇RAG综述
      • 1、Retrieval Source知识来源源
      • 2、Retrieval Metrics召回的度量标准
      • 3、Integration集成的方法
    • HIT的RAG+知识融合综述
    • Retrieval-Augmented-LLM
    • FastGPT:基于 LLM 大语言模型的知识库问答实现:
    • 陈丹琦Tutorial-基于检索的大语言模型
      • 1. 架构:What & How & When
      • 2. 如何训练
      • 3. 应用
    • 解决RAG的中间丢失问题
  • 三、相关RAG项目
    • chatlaw项目
      • 1. query抽取为key word
      • 2. 项目中的模型
      • 3. 调度模型
  • 四、embedding模型相关
    • FlagEmbedding
    • M3E embedding
    • 文本嵌入框架uniem
    • 七个emb模型总结
      • 1.BGE
      • 2.GTE
      • 3.E5 Embedding
      • 4.Jina Embedding
      • 5.Instructor
      • 6.XLM-Roberta
    • 增强emb质量
  • 五、RAG评测相关
    • 相关综述
    • ragas指标评估
  • 六、RAG相关比赛
  • 七、常见问题
    • 注意事项
    • 讨论记录

一、常见本地知识库问答流程

1 整体框架

在这里插入图片描述

  • 改进的点(方向):
    • 改LLM模型
    • embedding模型
    • 文本分割方式
    • 多卡加速模型部署
    • 提升top-k检索召回的质量
  • 基于数据隐私和私有化部署,可以方便的使用Langchain+大模型进行推理

2. 文本切分

Langchain源码:https://github.com/hwchase17/langchain/blob/master/langchain/text_splitter.py

Langchain的内置文本拆分模块的常见参数:

  • chunk_size:文本块的大小,即文本块的最大尺寸;
  • chunk_overlap:表示两个切分文本之间的重合度,文本块之间的最大重叠量,保留一些重叠可以保持文本块之间的连续性,可以使用滑动窗口进行构造,这个比较重要。
  • length_function:用于计算文本块长度的方法,默认为简单的计算字符数;

其他文本分割器:
在这里插入图片描述

我们直接举个栗子,比如对中文文本切分,继承langchain中类CharacterTextSplitter的ChineseTextSplitter类。正则表达式sent_sep_pattern来匹配中文句子的分隔符(如句号,感叹号,问好,分号等):

# 中文文本切分类
class ChineseTextSplitter(CharacterTextSplitter):
    def __init__(self, pdf: bool = False, **kwargs):
        super().__init__(**kwargs)
        self.pdf = pdf

    def split_text(self, text: str) -> List[str]:
        if self.pdf:
            text = re.sub(r"\n{3,}", "\n", text)
            text = re.sub('\s', ' ', text)
            text = text.replace("\n\n", "")
        sent_sep_pattern = re.compile('([﹒﹔﹖﹗.。!?]["’”」』]{0,2}|(?=["‘“「『]{1,2}|$))')  # del :;
        sent_list = []
        for ele in sent_sep_pattern.split(text):
            if sent_sep_pattern.match(ele) and sent_list:
                sent_list[-1] += ele
            elif ele:
                sent_list.append(ele)
        return sent_list

3. 图解流程

在这里插入图片描述

二、相关RAG综述/工作

一篇RAG综述

《A Survey on Retrieval-Augmented Text Generation》
地址:https://arxiv.org/abs/2202.01110
该工作旨在对检索增强文本生成进行研究。主要核心的点如下:
在这里插入图片描述

1、Retrieval Source知识来源源

训练语料:有标注的训练数据直接作为外部知识;

外部数据:支持提供训练数据之外的外部知识作为检索来源,比如于任务相关的领域数据,实现模型的快速适应;

无监督数据:前两种知识源都需要一定的人工标注来完善“检索依据-输出”的对齐工作,无监督知识源可以直接支持无标注/对齐的知识作为检索来源;

2、Retrieval Metrics召回的度量标准

浅层语义检索:针对稀疏向量场景的度量方法,比如TF-IDF, BM25等;

深层语义检索: 针对稠密向量的度量方法,比如文本相似度;

特定任务检索:在通用的度量场景下,度量得分高并不能代表召回知识准确,因此有学者提出基于特定任务优化的召回度量方法,提高度量的准确率;

3、Integration集成的方法

数据增强:直接拼接用户输入文本和知识文本,然后输入文本生成模型;

注意力机制:引入额外的Encoder,对用户输入文本和知识文本进行注意力编码后输入文本生成模型;

架抽取:前两种方法都是通过文本向量化的隐式方法完成知识重点片段的抽取,skeleton extraction方法可以显式地完成类似工作;

该工作针对后续优化方向提出了一些观点,认为:

RATG效果强依赖于召回知识的准确率,这个问题在query和目标知识片段的文本相似度较低的情况尤为突出;

需要做好存储的容量和召回效率之间的平衡;

逻辑上,召回度量模块和文本生成模块的联合训练会有更好的效果;但是在这样的框架下,其训练和预测之间会存在较大的Gap:训练时,模型只针对少量标注的知识源完成优化(Local);而预测时,模型是针对大量的知识源完成度量(Global);

此外,针对目前都基于通用的文本语义完成知识召回,后续可以考虑关注基于任务层级的召回方法的多样化研究,以及不同召回方法的调用的灵活性和可控制性,针对多模态知识源召回方法的优化;

HIT的RAG+知识融合综述

Retrieval-Augmented-LLM

项目:https://github.com/Wang-Shuo/A-Guide-to-Retrieval-Augmented-LLM
检索增强LLM:给 LLM 提供外部数据库,对于用户问题 ( Query ),通过一些信息检索 ( Information Retrieval, IR ) 的技术,先从外部数据库中检索出和用户问题相关的信息,然后让 LLM 结合这些相关信息来生成结果。
在这里插入图片描述

FastGPT:基于 LLM 大语言模型的知识库问答实现:

github.com/c121914yu/FastGPT

陈丹琦Tutorial-基于检索的大语言模型

链接:https://acl2023-retrieval-lm.github.io

1. 架构:What & How & When

在这里插入图片描述

2. 如何训练

现有工作中对于检索增强的语言模型被证实的比较work的训练方式可划分为以下四类:

  • Independent training:语言模型与检索器均是独立训练的。
  • Sequential training:独立训练单个组件后将其固定,另一个组件根据此组件任务目标进行训练。
  • Joint training w/ asynchronous index update:允许索引是“过时”的,即每隔T步才重新更新检索索引。
  • Joint training w/ in-batch approximation:使用“批内索引”,而不是完整知识库中的全部索引。
3. 应用

RAG常用在知识密集型任务上。
在这里插入图片描述

解决RAG的中间丢失问题

来自斯坦福大学、加州大学伯克利分校和Samaya AI的研究人员在论文《Lost in the Middle: How Language Models Use Long Contexts》中发现了一种类似于人类首要/近因效应的现象。这意味着,像人类一样,LLM更有可能回忆起位于输入开始或结束的信息,并倾向于忽略在中间的内容。

三、相关RAG项目

chatlaw项目

1. query抽取为key word

在这里插入图片描述

在这里插入图片描述

2. 项目中的模型
  • ChatLaw-13B,此版本为学术demo版,基于姜子牙Ziya-LLaMA-13B-v1训练而来,中文各项表现很好,但是逻辑复杂的法律问答效果不佳,需要用更大参数的模型来解决。

  • ChatLaw-33B,此版本为学术demo版,基于Anima-33B训练而来,逻辑推理能力大幅提升,但是因为Anima的中文语料过少,导致问答时常会出现英文数据。

  • ChatLaw-Text2Vec,使用93w条判决案例做成的数据集基于BERT训练了一个相似度匹配模型,可将用户提问信息和对应的法条相匹配,例如:

    “请问如果借款没还怎么办。”

    “合同法(1999-03-15): 第二百零六条 借款人应当按照约定的期限返还借款。对借款期限没有约定或者约定不明确,依照本法第六十一条的规定仍不能确定的,借款人可以随时返还;贷款人可以催告借款人在合理期限内返还。”

    两段文本的相似度计算为0.9960

3. 调度模型

将文件、音频、文字整合在一起,同时支持法律援助、法律文书、思维导图等多样化输出。

在这里插入图片描述

四、embedding模型相关

FlagEmbedding

在这里插入图片描述

M3E embedding

【M3E(Moka Massive Mixed Embedding)]
链接:https://huggingface.co/moka-ai/m3e-base?continueFlag=9b46d5a6f39f18849cafedf79fff183f

M3E模型的微调:https://github.com/wangyuxinwhy/uniem/blob/main/examples/finetune.ipynb

文本嵌入框架uniem

  • 项目链接:https://github.com/wangyuxinwhy/uniem
  • uniem 0.3.0, FineTuner 除 M3E 外,还支持 sentence_transformers, text2vec 等模型的微调,同时还支持 SGPT 的方式对 GPT 系列模型进行训练,以及 Prefix Tuning。

➿ 2023.07.11 , 发布 uniem 0.3.0, FineTuner 除 M3E 外,还支持 sentence_transformers, text2vec 等模型的微调,同时还支持 SGPT 的方式对 GPT 系列模型进行训练,以及 Prefix Tuning。 FineTuner 初始化的 API 有小小的变化,无法兼容 0.2.0
➿ 2023.06.17 , 发布 uniem 0.2.1 , 实现了 FineTuner 以原生支持模型微调,几行代码,即刻适配!
📊 2023.06.17 , 发布 MTEB-zh 正式版 , 支持 6 大类 Embedding 模型 ,支持 4 大类任务 ,共 9 种数据集的自动化评测
🎉 2023.06.08 , 发布 M3E models ,在中文文本分类和文本检索上均优于 openai text-embedding-ada-002,详请请参考 M3E models README。

七个emb模型总结

1.BGE

BGE,即BAAI General Embedding,是由智源研究院(BAAI)团队开发的一款文本Embedding模型。该模型可以将任何文本映射到低维密集向量,这些向量可用于检索、分类、聚类或语义搜索等任务。此外,它还可以用于LLMs的向量数据库。

BGE模型在2023年有多次更新,包括发布论文和数据集、发布新的reranker模型以及更新Embedding模型。BGE模型已经集成到Langchain中,用户可以方便地使用它。此外,BGE模型在MTEB和C-MTEB基准测试中都取得了第一名的成绩。

BGE模型的主要特点如下:

多语言支持:BGE模型支持中英文。
多版本:BGE模型有多个版本,包括bge-large-en、bge-base-en、bge-small-en等,以满足不同的需求。
高效的reranker:BGE提供了reranker模型,该模型比Embedding模型更准确,但比Embedding模型更耗时。因此,它可以用于重新排名Embedding模型返回的前k个文档。
开源和许可:BGE模型是开源的,并在MIT许可下发布。这意味着用户可以免费用于商业目的。
丰富集成:用户可以使用FlagEmbedding、Sentence-Transformers、Langchain或Huggingface Transformers等工具来使用BGE模型。
总的来说,BGE是一个强大的文本Embedding模型,适用于多种NLP任务。它的多语言支持、多版本选择和高效的reranker使其成为文本Embedding领域的领先模型。

2.GTE

GTE模型,也称为General Text Embeddings,是阿里巴巴达摩院推出的文本Embedding技术。它基于BERT框架构建,并分为三个版本:GTE-large、GTE-base和GTE-small。

该模型在大规模的多领域文本对语料库上进行训练,确保其广泛适用于各种场景。因此,GTE可以应用于信息检索、语义文本相似性、文本重新排序等任务。

尽管GTE模型的参数规模为110M,但其性能卓越。它不仅超越了OpenAI的Embedding API,在大型文本Embedding基准测试中,其表现甚至超过了参数规模是其10倍的其他模型。更值得一提的是,GTE模型可以直接处理代码,无需为每种编程语言单独微调,从而实现优越的代码检索效果。

3.E5 Embedding

E5-embedding是由intfloat团队研发的一款先进的Embedding模型。E5的设计初衷是为各种需要单一向量表示的任务提供高效且即用的文本Embedding,与其他Embedding模型相比,E5在需要高质量、多功能和高效的文本Embedding的场景中表现尤为出色。

以下是E5-embedding的一些特点:

新的训练方法:E5采用了“EmbEddings from bidirEctional Encoder rEpresentations”这一创新方法进行训练,这意味着它不仅仅依赖传统的有标记数据,也不依赖低质量的合成文本对。
高质量的文本表示:E5能为文本提供高质量的向量表示,这使得它在多种任务上都能表现出色,尤其是在需要句子或段落级别表示的任务中。
多场景:无论是在Zero-shot场景还是微调应用中,E5都能提供强大的现成文本Embedding,这使得它在多种NLP任务中都有很好的应用前景。

4.Jina Embedding

jina-embedding-s-en-v1是Jina AI的Finetuner团队精心打造的文本Embedding模型。它基于Jina AI的Linnaeus-Clean数据集进行训练,这是一个包含了3.8亿对句子的大型数据集,涵盖了查询与文档之间的配对。这些句子对涉及多个领域,并已经经过严格的筛选和清洗。值得注意的是,Linnaeus-Clean数据集是从更大的Linnaeus-Full数据集中提炼而来,后者包含了高达16亿的句子对。

Jina Embedding有这些亮点:

广泛应用:jina-embedding-s-en-v1适合多种场景,如信息检索、语义文本相似性判断和文本重新排序等。
卓越性能:虽然该模型参数量仅为35M,但其性能出众,而且能够快速进行推理。
多样化版本:除了标准版本,用户还可以根据需求选择其他大小的模型,包括14M、110M、330M、

5.Instructor

Instructor是由香港大学自然语言处理实验室团队推出的一种指导微调的文本Embedding模型。该模型可以生成针对任何任务(例如分类、检索、聚类、文本评估等)和领域(例如科学、金融等)的文本Embedding,只需提供任务指导,无需任何微调。Instructor在70个不同的Embedding任务(MTEB排行榜)上都达到了最先进的性能。该模型可以轻松地与定制的sentence-transformer库一起使用。

Instructor 模型主要特点如下:

多任务适应性:只需提供任务指导,即可生成针对任何任务的文本Embedding。
高性能:在MTEB排行榜上的70个不同的Embedding任务上都达到了最先进的性能。
易于使用:与定制的sentence-transformer库结合使用,使得模型的使用变得非常简单。
此外,模型还提供了其他使用案例,如计算句子相似性、信息检索和聚类等。

6.XLM-Roberta

XLM-Roberta(简称XLM-R)是Facebook AI推出的一种多语言版本的Roberta模型。它是在大量的多语言数据上进行预训练的,目的是为了提供一个能够处理多种语言的强大的文本表示模型。XLM-Roberta模型在多种跨语言自然语言处理任务上都表现出色,包括机器翻译、文本分类和命名实体识别等。

模型主要特点如下:

多语言支持:XLM-Roberta支持多种语言,可以处理来自不同语言的文本数据。
高性能:在多种跨语言自然语言处理任务上,XLM-Roberta都表现出了最先进的性能。
预训练模型:XLM-Roberta是在大量的多语言数据上进行预训练的,这使得它能够捕获跨语言的文本表示。
7.text-embedding-ada-002
text-embedding-ada-002是一个由Xenova团队开发的文本Embedding模型。该模型提供了一个与Hugging Face库兼容的版本的text-embedding-ada-002分词器,该分词器是从openai/tiktoken适应而来的。这意味着它可以与Hugging Face的各种库一起使用,包括Transformers、Tokenizers和Transformers.js。

模型主要特点如下:

兼容性:该模型与Hugging Face的各种库兼容,包括Transformers、Tokenizers和Transformers.js。
基于openai/tiktoken:该模型的分词器是从openai/tiktoken适应而来的。

增强emb质量

参考:

  • RAG高级技术:https://pub.towardsai.net/advanced-rag-techniques-an-illustrated-overview-04d193d8fec6;有对应的翻译:https://zhuanlan.zhihu.com/p/674755232

五、RAG评测相关

相关综述

HIT综述《Trends in Integration of Knowledge and Large Language Models: A Survey and Taxonomy of Methods, Benchmarks, and Applications》
在这里插入图片描述

ragas指标评估

在这里插入图片描述

六、RAG相关比赛

经验:第一名很早之前就使用了RAG+微调,一直遥遥领先,其具体的关键点为:
1.RAG+维基百科文档(上TB原始cirrussearch维基百科数据,夸张)
2.e5向量模型,具体是e5-base-v2,e5-large-v2,gte-base,gte-large和bge-large
3.自己定制pytorch的相似度模型,无需faiss,可以解决GPU显存不够的问题。
4.大多数模型是7B和融合,又一个13B,单更大的模型没起作用。
5. 想让deberta work,但是大模型太强了,甚至融合都没用。
6.所有的LLM都是二分类头+微调的。
7.用了两种典型的分类头结构

七、常见问题

知识库问题:扫码版图文表图区精度不高,超长文本存储和检索精度低

改进(除了第三点,其他都能粗暴地用prompt实现):

  • 1、把问答域细化,给检索文本分类,打标签处理,以缩小召回目标域,提升相关性。
  • 2、增加问答逻辑。如问题与上下文是否相关,上下文是否可以回答用户问题的判定逻辑,拒答逻辑。
  • 3、不同种类问答的分流逻辑。打个比方,问百科,问医药,问金融,走不同的回答逻辑。
  • 4、使用多重召回逻辑。基于向量,基于领域向量,基于es,基于编辑距离等,走投票策略。
  • 5、增加生成前判定,生成后判定逻辑。前者判定适合是否该回答,是否该拒答,后者判定是否对自己回答有置信。

注意事项

  • 向量库只是个数据库,并不能优化什么决定性的东西【除了检索速度】。重心要放在,
  • 1)对相关性内容的召回上,把不对的踢掉【分类,拒答】,把对的提高(加权,投票)
  • 2)不受控生成的缓解【听懂指令,不跳出给定上下文,这靠SFT】。

讨论记录

  1. 如果你目前的知识库组织方式是文档那么你就用文档,不用再抽取
  2. 如果你数据库里有结构化数据,例如医药数据库存了各种药以及各种属性,这是领域内你特有的sql数据或者以前积累的已抽取的三元组现在想用起来,你可以把他当成知识图谱融进大模型的推理里
  3. 文档检索增强的问答模型依然存在幻觉,减少这种幻觉的方式的办法是提高你召回片段的质量,以及训练你的模型拒绝回答的能力」

某人:去年才开始做知识抽取,已经抽取得到一些结构化知识库,今年chatgpt突然出现,感觉知识图谱没啥优势了[捂脸]。你的说的第三点可能就是领域知识图谱仅存的一点优势了。如果使用基于知识图谱的问答系统,那就是要将用户问题转成查询语句,如在知识库如Neo4j中,没有查到相应的答案,就告诉用户查无答案,也算是避免幻觉

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

D12 | 手搓 RAG:30 行代码搞定问答机器人 这篇文章介绍了如何用30行Python代码实现一个基础的RAG(检索增强生成)问答机器人,分为三个部分: 最简版本(10行代码):展示RAG核心流程——检索文档、计算相似度、调用AI生成回答。 完整流程拆解:分5步实现RAG系统,包括文档加载、切片、Embedding向量化、检索相似内容、生成回答。 30行完整版:整合所有步骤,构建一个可运行的问答机器人,支持流式输出,并能处理公司政策等文档查询。 该实现不依赖框架(如LangChain),代码简洁,适合快速上手理解RAG原理,可直接用于实际项目。 阅读详情

相关推荐

以太网物理层协议整理(2)-万兆以太网

在万兆以太网标准化过程中,IEEE和10GEA(万兆以太网联盟)是两个最重要的组织。 万兆以太网标准和规范都比较繁多,在标准方面,首先有2002年的IEEE 802.3ae,后来也不断有新的万兆以太网规范推出,如2006年的IEEE 802.3an标准(10GBase-T)就推出了基于双绞铜线的万兆以太网规范,同样的IEEE 802.3aq标准推出了基于光纤的10GBase-LRM;2007年的

NowOrNever 3万+

【RAG问答相关】复杂知识库问答综述(中)

基于SP的方法采用一种解析-执行过程,通过一系列模块来实现,包括问题理解、逻辑解析、知识库连接和知识库执行。这些模块在处理复杂的知识库问答(KBQA)时面临不同的挑战。首先,当问题在语义和句法方面都较为复杂时,问题理解变得更加困难。其次,逻辑解析必须涵盖复杂问题的多种查询类型。此外,涉及更多关系和主题的复杂问题将显著增加解析的可能搜索空间。第三,逻辑形式的手动标注成本高昂且劳动密集,使用弱监督信号(即问题-答案对)来训练基于SP的方法具有挑战性。

Gaga246的博客 1214

Unity URP半透明物体渲染避坑指南:双面渲染与深度写入的实战技巧

本文深入探讨了Unity URP中半透明物体自交叠渲染问题的核心根源与解决方案。针对模型自身交叠导致的排序错误,文章提供了双面渲染与深度写入两种实战技巧,详细分析了其实现原理、性能开销及适用场景,帮助开发者根据项目需求选择最优方案,有效提升玻璃、水体等材质的视觉表现。

sunny的博客 545

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

BGE,即BAAI General Embedding,是由智源研究院(BAAI)团队开发的一款文本Embedding模型。该模型可以将任何文本映射到低维密集向量,这些向量可用于检索、分类、聚类或语义搜索等任务。此外,它还可以用于LLMs的向量数据库。BGE模型在2023年有多次更新,包括发布论文和数据集、发布新的reranker模型以及更新Embedding模型。BGE模型已经集成到Langchain中,用户可以方便地使用它。此外,BGE模型在MTEB和C-MTEB基准测试中都取得了第一名的成绩。

python12222_的博客 2332

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

通讯模块_三菱IQ-R PLC串口通讯模块RJ71C24进行Modbus-RTU通讯

在日常的选型中,很多电气工程师咨询我,三菱iQ-R系列有没有Modbus通讯模块,我在这里可以肯定的回复您,这个肯定是有的;我们共有三种可以选择分别是RJ71C24、RJ71C24-R2、RJ71C24-R4。RJ71C24系列支持MC协议通信、通信协议通信、无顺序协议通信、双向协议通信全、MODBUS通信。当我帮助他们选型之后,他们在使用的时候,又是一头雾水。那么今天我抽一些时间讲解一RJ71...

weixin_39878549的博客 9271

动手学RAG:汽车知识问答

在自然语言处理领域,大型语言模型(LLM)如GPT-3、BERT等已经取得了显著的进展,它们能够生成连贯、自然的文本,回答问题,并执行其他复杂的语言任务。然而,这些模型存在一些固有的局限性,如“模型幻觉问题”、“时效性问题”和“数据安全问题”。为了克服这些限制,检索增强生成(RAG)技术应运而生。RAG技术结合了大型语言模型的强大生成能力和检索系统的精确性。它允许模型在生成文本时,从外部知识库中检索相关信息,从而提高生成内容的准确性、相关性和时效性。

张伟的专栏 4023

kylinos-SP3的软件包降级到V10-SP1中的版本

如果想再次回退到原来版本,将repo改为原来的SP3版本,然后执行yum history 查看ID号,执行yum history rollback ID就可以恢复了。此时我们发现已安装的版本是1.32-2.ky10,而sp1网络源里的版本是1.30-11.ky10,我们将降级安装网络源中的低版本软件包。近期有个客户想要把kylinos-V10-sp3的软件包降级到kylinos-V10-SP1的版本。3、以tar包为例,查看已安装版本及网络源中其他版本。1、查看系统版本,确认是V10-SP3。

太极淘的博客 1103

RAG检索增强生成三大核心问题

介绍RAG三大核心问题:what?when?how?

weixin_57384302的博客 2174

Deeplabv3+改进1:添加CBAM注意力机制|有效涨点

我们提出卷积块注意力模块(CBAM),这是一种简单而有效的前馈卷积神经网络注意力模块。给定一个中间特征图,我们的模块会依次沿两个独立维度(通道和空间)推断注意力图,然后将注意力图与输入特征图相乘,以实现自适应特征细化。由于 CBAM 是一个轻量级且通用的模块,它可以无缝集成到任何 CNN 架构中,几乎不会增加开销,并且可以与基础 CNN 一起端到端训练。我们通过在 ImageNet-1K、MS COCO 检测和 VOC 2007 检测数据集上进行的大量实验验证了 CBAM。

AIcurator的博客 1691

单光子雪崩二极管(SPAD):原理、极高增益机制与微光探测解析

本文系统阐述了单光子雪崩二极管(SPAD)的工作原理及其在弱光探测中的应用。SPAD通过工作在盖革模式下的碰撞离化效应实现单光子探测,其核心机理包括:1)采用p+-n-n+结构实现高电场分布;2)通过雪崩倍增过程获得10^6量级增益;3)采用主动/被动淬灭机制实现快速恢复。文章详细分析了SPAD的关键性能参数(如光子探测效率、暗计数率等)及其在量子通信、激光雷达等领域的应用优势,揭示了该器件在极微弱光信号探测中的独特价值。

Fun_LiDAR的博客 1043

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

BGE,即BAAI General Embedding,是由智源研究院(BAAI)团队开发的一款文本Embedding模型。该模型可以将任何文本映射到低维密集向量,这些向量可用于检索、分类、聚类或语义搜索等任务。此外,它还可以用于LLMs的向量数据库。BGE模型在2023年有多次更新,包括发布论文和数据集、发布新的reranker模型以及更新Embedding模型。BGE模型已经集成到Langchain中,用户可以方便地使用它。此外,BGE模型在MTEB和C-MTEB基准测试中都取得了第一名的成绩。

顶峰 1131

【软件测试】人工智能(AI)在软件测试领域的应用

AI在软件测试领域的应用使测试过程更加自动化、高效和智能。它可以帮助测试团队减轻负担,更快地识别和修复问题,最终提高软件的质量和可靠性。随着AI技术的不断进步,未来AI在软件测试领域的应用将更加广泛和深入。

weixin_46453070的博客 4385

RAG技术完全指南:从零开始构建大模型知识库问答系统!大模型应用开发实战

RAG(检索增强生成)技术通过从外部知识库检索相关文档并增强LLM功能,有效减少了"幻觉"问题。其实现包括三个核心步骤:索引(文档分块、编码存入向量数据库)、检索(语义相似度匹配)和生成(结合问题和检索内容生成答案)。文章详细介绍了文本切分策略(直接分段、生成问答对、增强信息)及滑动窗口方法,为构建高效智能问答系统提供了完整的技术路径。

Android23333的博客 565

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RAG架构

它可以高效的帮我们检索这些向量。Embedding:通过一个专门的模型将上传的表格、文本等这种本地文件数据处理成机器能够理解的数字,相似的文本在这个向量空间里会更接近,比如苹果、水果这种词在向量数据库中比较接近,首先它会在一个知识库中找到和问题相关的部分,然后把找到的内容整理成简单易懂的形式,最后用整理好的内容生成一个精准的解析的回答。下一步选择Embedding模型和向量数据库,嵌入模型其实非常重要,它处理的准确性直接决定了基于智库回答的准确度,OpenAI的嵌入模型目前是最强大的,但是需要付费。

知识海洋 326

深度学习工具包 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")

基于LLM与检索增强生成(RAG)的文本生成

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与文本生成相结合的 AI 技术。它通过检索模块从外部知识库中检索与问题相关的文档或信息,然后利用生成模块处理这些信息,生成更专业的文本。RAG广泛应用于问答系统、对话系统、个性化推荐等领域。

qq_61784003的博客 1100

使用Xinference-v1.17.1构建智能问答知识库

本文介绍了如何在星图GPU平台上自动化部署Xinference-v1.17.1镜像,快速构建企业级智能问答知识库。该方案利用检索增强生成(RAG)技术,能够高效解析企业内部文档,并通过语义检索与智能问答,为员工提供准确、有据可查的业务咨询,显著提升知识查找效率。

weixin_36197669的博客 166

5分钟搞定kotaemon:零代码搭建你的RAG文档问答系统(附Docker一键部署)

本文详细介绍了如何利用开源RAG应用Kotaemon,在5分钟内通过Docker一键部署搭建零代码的智能文档问答系统。该系统开箱即用,支持上传PDF、Word等多种格式文档,通过直观的Web界面实现基于大语言模型的智能检索与对话,极大降低了构建私有化知识库的技术门槛。

hp777的博客 185

助力数智化转型:使用检索增强生成【RAG】构建物业行业大模型

LLM是一种通过大量数据训练的模型,可以回答任何问题或完成任务,并利用其参数化记忆。

weixin_51517346的博客 1797

DIFY-03:构建 RAG 知识库——文档问答

本文介绍了使用Dify平台构建RAG知识库进行文档问答的实验流程。主要内容包括:1)创建知识库并上传Python教程文档;2)配置文档分段规则(500字符长度/50字符重叠)、选择高质量索引和bge-m3嵌入模型,启用混合检索与qwen3-rerank模型;3)在Chatflow中搭建包含知识检索节点的应用,设置系统提示词以规范回答格式;4)测试阶段验证了知识库内问题(如列表与元组区别)和超范围问题(量子计算)的响应效果。实验还建议后续可对比不同分段方式和嵌入模型的效果差异。

xluge的博客 244

RagFlow: 一文读懂RAGFlow:从 0 到 1教你搭建RAG知识库

最近随着Deepseek的火爆,如何高效地整合海量数据与生成式模型成为了技术领域内的一大热点。

2301_81888214的博客 1885

前端工程师的 RAG 入门实战:从零构建一个知识库问答系统

这篇文章以我在金融科技 KMS 知识管理平台的真实实践为例,从前端视角手把手带你从零搭建一个完整的 RAG 知识库问答系统。不堆术语,不用懂 Transformer 架构,用"搜索引擎 + AI 总结"的类比讲清楚 Embedding、向量检索、Rerank 三个核心概念。技术栈选的是 Chroma + LangChain + OpenAI,开箱即用。

Funpaid的博客 670

检索增强生成(RAG)有什么好的优化方案?

如何搭建基于本地知识库的问答机器人?原理图和步骤如下:基于LLaMaIndex和Qwen1.5这里面主要包括包括三个基本步骤:1. 索引 — 将文档库分割成较短的 Chunk,并通过编码器构建向量索引。2. 检索 — 根据问题和 chunks 的相似度检索相关文档片段。3. 生成 — 以检索到的上下文为条件,生成问题的回答。更加完善的RAG技术还包含了很多点,如下是RAG技术的大图,魔搭社区也将逐步分析,希望提供更多更好更详细的RAG技术分享。

2401_84204207的博客 1060

LangChain-Chatchat:基于本地知识库的中文问答系统

LangChain-Chatchat 是一个支持中文场景、可离线部署的本地知识库问答工具,结合 LangChain 与开源大模型实现文档解析、向量化检索与智能回答生成,适用于多种格式文件与数据库接入。

weixin_35364187的博客 665
上一篇: 深度学习embedding方法,降维,以及pytorch中使用embedding
下一篇: 使用Llama3/Qwen2等开源大模型,部署团队私有化Code Copilot和使用教程
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值