微信扫码
与创始人交个朋友
我要投稿
ima.copilot是一款由腾讯混元大模型技术支持的智能工作台产品,旨在提供智慧的搜索、阅读和写作体验。它是一个会思考的知识库,提供搜读写新体验。用户可以基于全网信源搜索问答,还可以基于微信公众号文章搜索问答,打造专属知识库,并利用智能写作功能完成论文、作文、文案等写作任务,预示着AI技术在个人知识管理和智能写作中的新应用。该产品于2024年10月23日首次发布,目前已经推出了:Windows版本、MacOS版本。
用户需求方面:
学习需求满足:对于学生群体,ima.copilot 可以辅助完成课程作业、论文写作等任务。例如,学生在撰写学术论文时,能通过该智能工作台快速获取相关主题的资料、文献综述等内容,并且利用智能写作功能生成文章框架和初稿,极大提高学习效率。
办公需求满足:对于职场人士,它可以助力方案策划、工作总结等工作。比如,营销人员在策划市场推广方案时,能够借助 ima.copilot 快速收集市场数据、行业案例等信息,为方案制定提供有力支持。
Copilot(协作型人工智能)是一种人工智能系统,旨在辅助用户完成任务、提高工作效率,甚至与用户共同完成一些复杂的工作。与传统的自动化系统)RPA不同,Copilot 不仅仅是执行任务,它还具有交互性,能够理解用户的需求、提供个性化的建议、实时调整策略,并根据上下文信息帮助用户决策。
Copilot 的关键特点是 协作性 和 智能性。它可以作为人类的智能助手,与用户共同工作,提供有价值的建议和实时支持。Copilot 系统通常基于大规模的机器学习模型,能够处理复杂的任务和多样的场景,且能够随着时间的推移不断学习和适应。
ima.copilot的核心功能包括搜索、知识库和笔记三个模块:
智能搜索和问答:搜索模块支持全网资料搜索、已创建的知识库搜索和截图识别,ima.copilot还整合了微信公众号文章的生态系统,使得用户可以获取整个公众号世界中的优质知识。
知识库建立和问答:帮助用户将搜到到的的优质内容汇入个人知识库或者自己创建知识库,打造与个人思想同频成长的知识库。
笔记模块和智能写作: ima提供智能写作功能和解读功能,能够帮助用户完成论文、作文、文案等多种写作任务,并支持多种语言翻译。
后续完善:
1、后续如果能和腾讯文档打通,用户可以使用在腾讯文档已经沉淀的文档知识,又可以基于ima整理加工后,又沉淀到腾讯文档,形成闭环。
2、实际体验,同样的知识库和提示词,在coze 平台的生成文档的目录完整度、细节完善、丰富比ima要好20%,可以对比 持续完善;
3、支持更多的数据格式:
搜索:--目前
目前仅支持文件数量:最多支持10个
支持PDF、DOC、JPEG、PNG
知识库:支持批量上传PDF/Word格式文件----目前
4、知识库模板:可以基于不同行业、场景的知识库,设置对应知识库体系的框架模板,参考:飞书、秘塔、金山
在LLM微调中,我们通常处理以下几个问题:
知识注入:微调可以让模型掌握特定领域的知识,但这种知识是“内化”在模型参数中的,更新难度大,且不具备实时性。
信息准确性:LLM可能会生成错误或“编造”的信息,尤其是模型内没有的知识。
响应的上下文相关性:如果模型依赖的是固定的训练数据,可能无法在生成时提供最新或特定的背景信息。
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与自然语言生成相结合的技术,用于提升生成式模型(如LLM)的响应质量和信息准确性。RAG通过检索模块提供即时的信息支持,进而弥补了LLM微调的一些局限性,是大模型的参考资料。
RAG(Retrieval-Augmented Generation,检索增强生成)技术,严格来说RAG不完全属于传统意义上的LLM微调,而是一种增强生成效果的方案。具体来说,RAG通过将检索模块(通常是知识库或文档库)与生成模型结合,提升了生成任务中信息的准确性和上下文关联性。RAG是一种低成本,高质量,高研发效率的方案,这样既减少了 Fine-tuning(微调) 的设备、人力成本,又能提供更为良好的生成结果。要提升AIGC 质量,通常优先考虑 PE(提示词工程)与 RAG 方案(RAG可以理解为 PE 方案的子集)。
RAG的核心在于为生成模型提供了一个外部知识检索机制。在RAG流程中,模型生成响应前先从外部知识库(例如文档库、数据库或搜索引擎)检索相关信息,再将这些检索到的内容作为输入,辅助生成更准确、信息丰富的答案。这种机制特别适用于需要即时信息更新或特定领域知识的应用场景。
RAG的流程一般包括以下3个步骤:
检索(Retrieval):首先,RAG模型会根据用户输入(如问题或查询)生成一个检索查询。这个查询被发送给外部知识库或检索系统,系统返回若干条与查询相关的文档或段落。
生成(Generation):接下来,检索到的内容连同原始用户输入一起被输入到生成模型中。模型基于这些输入信息生成最终的回答或响应。
组合(Combination):生成的响应通常会综合检索到的信息与模型自身的生成能力,确保回答既符合上下文,又具备高准确性。
RAG相较于传统的生成模型(如直接用GPT-4生成答案)有以下几个优点:
实时性和灵活性:检索模块连接到外部知识库,这样即使是需要经常更新的知识,也可以通过检索系统实时获得,无需频繁微调模型。
减少“幻觉”:生成模型容易“编造”或“胡编”信息,而RAG通过外部知识的支撑,可以显著降低生成内容的错误概率。
应对长尾知识:在某些小众领域或特殊任务中,模型可能没有相关的训练数据,但通过RAG检索到的内容,可以帮助模型生成符合预期的专业答案。
适应长文本的回答:如果问题涉及多个方面或复杂的主题,RAG可以先检索不同的段落,再生成综合性回答。
RAG技术适用于以下场景:
问答系统:特别是需要准确答案的问答,例如法律咨询、医学诊断等。
知识助手:用于内部文档、知识库查询,生成符合企业或组织知识的回答。
推荐系统:结合检索到的内容,生成用户个性化推荐的文字描述。
信息摘要:对长文档的内容进行检索和生成,以便生成更为精确的摘要。
市场上比较多的RAG方案,多数参考开源方案:LangChain-Chatchat (原 Langchain-ChatGLM)实现的。
LangChain-Chatchat支持市面上主流的开源 LLM、 Embedding 模型与向量数据库,可实现全部使用开源模型离线私有部署。也支持各类模型及模型 API 的接入。
LangChain-Chatchat实现原理如下图所示,过程包括:加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k
个 -> 匹配出的文本作为上下文和问题一起添加到 prompt
中 -> 提交给 LLM
生成回答。
从文档处理角度来看,实现流程如下:
虽然有LangChain-ChatGLM模型参考,但是要实现基于知识库的问答AI助手,还是要有很多事情要攻克:
(1). 常见知识库的文档文件格式种类多,需要做格式适配解析: 文字、演示、表格、图片、音视频、HTML、JSON、Markdown 等。要实现一个基于知识库的搜索、阅读和辅助写作的工作台,首先需要对常见的知识库的数据格式进行提取和处理,以确保数据的准确性和完整性,才能保障copilot回答质量,需要处理的数据格式如:图片、markdown、代码块、表格、排版、内容组织等等。详细的例如:对于图片中的关键信息,可能需要借助图像识别技术转化为文字信息以便纳入问答考量范围;对于代码块,则要解析其逻辑与功能,使其能与相关问题进行有效匹配。
常见的用于建立知识库的数据格式:
文本文件(如 TXT、Markdown 、wiki等)
存储特点:TXT 文件是纯文本格式,简单直观,通用性强;Markdown 文件在纯文本基础上可以通过简单的标记语法来实现格式设置,如标题、列表、链接等。
适用知识库类型:适用于一些简单的知识库,或者作为知识库内容的补充存储形式。例如,技术知识库中的一些简单的代码注释、学术知识库中的研究思路记录可以用 TXT 格式存储;产品知识库中的用户评价可以用 Markdown 格式存储,方便添加格式,如突出好评或差评。
文档格式(PDF 、word、Excel)
存储特点:能够精确地保留文档的原始格式,包括文字排版、图表、格式、字体等,并且在不同设备和平台上显示效果一致。
适用知识库类型:常用于存储正式的的文档,如学术知识库中的学术论文、企业知识库中的重要政策文件、报告、手册、教程、方案等等。Excel适合用于管理和展示具有表格结构的知识内容,如数据统计、清单、表格化的知识梳理等。
图像格式(JPEG 、PNG、GIF)
存储特点:可以在保持较高图像质量的同时,有效地减小文件的大小,便于存储和传输
适用知识库类型:图像可以用于辅助说明知识内容,如展示产品图片、实验结果图片、流程图、知识图谱等的图标和标识。GIF 格式的动画可以用于生动地展示一些动态的知识内容,如操作流程、实验过程、工作原理等
HTML 文件
存储特点:用于构建网页内容,可以包含文字、图像、链接、表单等多种元素,通过浏览器可以方便地展示和交互。
适用知识库类型:适用于需要在网络上展示和交互的知识库,如产品知识库中的产品介绍网页、客户服务知识库中的在线客服帮助中心网页。
关系型数据库(如 MySQL、Oracle 等)
存储特点:将数据存储在表中,表与表之间通过关系(如主键 - 外键关系)相互连接。数据具有严格的结构化,每一列都有明确的数据类型定义。
适用知识库类型:适用于结构化程度高的知识库,如企业知识库中的员工信息、产品知识库中的产品规格数据。例如,在企业知识库中,可以用一个表存储员工基本信息(员工编号、姓名、部门等),另一个表存储员工培训记录(培训课程、培训时间、成绩等),通过员工编号建立关联。
非关系型数据库(如 MongoDB、Redis 等)
存储特点:采用灵活的数据模型,如文档型(MongoDB)、键 - 值对(Redis)等。可以存储非结构化或半结构化的数据,对数据的格式要求相对宽松。
(2) 、从 LangChain-ChatGLM 的实现原理图来分析:数据量和质量、Embedding召回率、LLM 的回答能力的准确性和可靠性都会影响到最终回答的准确率。
Embedding召回率:开源嵌入模型,通常是通过大规模的公共语料库(例如新闻、书籍、社交媒体内容等)进行训练的。这些语料库通常包含标准化的语言和常见的词汇,但它们可能不包括特定行业、场景、公司的内部术语或行业特有的词汇。在知识问答任务中,模型的召回率(recall rate)至关重要。如果模型没有恰当的嵌入(embedding)或文档检索能力,可能会从大规模文本库中召回不相关的内容,导致回答不准确或者无关紧要。
LLM 回答能力的准确性和可靠性:商用 LLM(如 OpenAI 的 ChatGPT)通常经过大量的优化和微调,针对实际应用场景进行专门的训练,以提高准确性和可靠性。相比之下,开源 LLM虽然在开放性和可定制性上有优势,但由于没有经过专门的行业数据微调,可能在一些特定任务(如知识问答)上的表现相对较弱。使用相同的问答数据集测试,ChatGPT 的准确性95%以上,而未经调优的开源模型在85%以上 。另外,受限于 Embedding 的召回率导致材料中混入的不相关的文本块和一些数据格式(表格、图片等),都会进一步影响 LLM 的回答准确率。这个差距主要来源于以下几个方面:
训练数据的质量和规模:商用 LLM 通常使用庞大的数据集进行训练,包括大量的领域特定知识、问答数据、对话数据等。它们在训练时考虑了数据的多样性和广泛性,从而使得模型对问题的回答更加精准。许多开源 LLM 的训练数据集可能相对较小或缺乏高质量的领域特定数据,导致其在面对特定任务时表现不佳。
微调与优化:商用 LLM 会针对特定任务进行微调,尤其是在 问答系统、对话生成 和 知识推理 等方面,进行细致的调整。这些微调使得商用 LLM 能够在不同领域和任务中表现得更好。开源 LLM 通常没有像商用 LLM 那样经过大规模、精细化的微调,特别是在回答复杂问题、进行推理和知识整合时,往往表现不如商用 LLM。
超参数和架构的优化:商用 LLM 通常会进行架构的调整和超参数的优化,以提升模型在实际应用中的表现,特别是在处理特定类型问题时的能力。
具体实现可以参考:LLM微调+RAG的原理和实践(2)-教案助手
知识库建立和查询的整体流程如下图:
● 上传需要保存的知识库内容或者全网自动搜索相关知识内容:
文本文件(如 TXT、Markdown 、wiki等);
文档格式(PDF 、word、Excel等);
图像格式(JPEG 、PNG、GIF);
HTML 文件;
...
● 对上传的内容进行数据清洗, 提取其中的有效信息;
● 将处理后的数据按照一定规则进行数据分块;
● 请求Embedding对分块后的数据进行向量化, 并保存在本地向量库中;
● 对用户问题进行归一化处理后, 请求 Embedding进行向量化;
● 使用向量化后的问题在本地向量库中, 进行相似度匹配检索;
● 获取相似度满足要求的数据, 根据不同任务类型选择定制的Prompt进行封装;
● 请求LLM, 获取预期的结果。
在向量化之前,需要对各种文档数据进行预处理,以确保召回的准确性,总体分2类数据:结构化和非结构化。
步骤一:获取文档的核心内容,这些内容是构建问答知识库的重要素材源泉;比如 :文档内容content、文档基本信息metadata等字段,可以精准地获取文档的元信息,诸如文档的创建时间、作者、修改记录等详细资料,这些元信息对于深入理解文档的背景与价值有着不可或缺的作用;
非结构化数据:如DOC、PDF、Markdown、Word等文件,需要先进行格式化处理,获取文档的纯文本信息。
结构化数据:接口文档获取的,如:开发日志、标准接口文档(字段)等,可以直接获取有效信息(比如问题单标题、描述、链接等),转为JSON格式,由于这里已经是结构化后的JSON数据,就不再需要额外的语义分割,直接进行向量化即可。
步骤二:获取到文档内容后,对数据进行语义切分;
向量化,也称为Embedding,是将客观世界中的事物或对象,映射到由多个特征维度抽象出来的向量空间中的过程。通过计算多个特征维度的权重,可以计算出两个对象之间的向量距离,由此可以推算出两个对象间的相似度。
文本嵌入技术主要用于将文本数据转化为机器学习模型可以理解和使用的形式。Word2Vec、GloVe、FastText是常见的词嵌入技术,它们都可以将单词映射到密集的向量中。这些技术在文本分类、情感分析和机器翻译等任务上都有着广泛的应用。Word2Vec有两种架构:连续词袋模型(CBOW)和Skip-gram。GloVe则通过构造全局的词-词共现矩阵来学习词向量。FastText则在Word2Vec的基础上,加入了字符级别的n-gram信息,使其在处理罕见词和词形变化上更具优势。然而,这些模型生成的词嵌入通常不包含词在特定上下文中的语义。为了解决这个问题,研究者引入了基于Transformer的模型,如BERT, GPT, XLNet等。这些模型可以生成更具上下文语义的词嵌入。这类模型通常被预训练在大量的文本数据上,然后可以在特定的任务上进行微调。
图像嵌入技术的目标是将图像数据转化为可用于机器学习模型的形式。卷积神经网络(CNN)是用于图像嵌入的主要工具,其中VGG, ResNet, Inception等架构是非常经典的模型。这些模型通过卷积层和池化层来提取图像的局部特征,并生成表示图像内容的高维向量。近年来,深度生成模型如变分自编码器(VAE)和生成对抗网络(GAN)也被用于生成图像的嵌入向量。另外,Transformer模型如ViT(Vision Transformer)也在图像处理上取得了不错的效果。ViT是一种将图像分割为多个小块,然后使用Transformer进行处理的模型。
图嵌入技术的目标是将图中的节点和边转化为可以用于机器学习模型的形式。经典的算法如DeepWalk和node2vec使用随机游走和Word2Vec的思想来生成图中节点的嵌入向量。GraphSAGE算法则可以生成邻居节点的嵌入向量。图神经网络(GNN)和它的一些变体如GCN, GAT等,使用节点的特征和邻接矩阵来生成节点的嵌入,它们在处理图结构数据上表现出了很好的性能。这些模型可以捕获图的拓扑结构和节点的属性信息,并将这些信息编码到低维向量中,从而方便后续的任务,如节点分类、链接预测和图分类等。
音频嵌入技术的目标是将原始的音频信号转化为机器学习模型可以理解的形式。经典的方法主要是使用一些信号处理的技术,如傅立叶变换和MFCC(梅尔频率倒谱系数)等来提取音频的特征。深度学习的方法如卷积神经网络(CNN)和循环神经网络(RNN)在音频嵌入中有广泛的应用。例如,WaveNet是一个生成模型,可以直接对原始音频波形进行建模。最近,也有研究者开始尝试使用Transformer模型来处理音频数据,这表明了Transformer模型在各种类型的数据嵌入上的强大潜力。
通过上面的数据预处理和数据向量化流程,知识库工作台所需要使用到的经验数据都转换成了向量的形式存在了向量库中。当用户提交一个业务请求时,在经过意图识别和问题归一化处理后,将获取出的问题信息同样进行向量化处理,在通过向量库的相似度检索获取到相似度最高的top K经验数据。整个向量查询的流程,分以下几步:
查询理解涵盖多个方面,包括查询词扩展、查询词分词、查询词 NER(命名实体识别)、意图理解、词权重(term - weight)。查询词扩展借助大模型来丰富用户的查询词,这样在检索时使用多个查询词,能获取更优质的结果,满足 AI 写作对内容准确性和丰富度的要求。而查询词分词、查询词 NER、意图理解、词权重这些操作,主要是为后续的召回、排序工作提供有力辅助,确保检索流程的高效与精准。
向量查询优化
对于经验文档的查询,当前是按照单个文件进行索引,直接遍历索引进行查询时耗时会比较长。在当前的查询流程中,我们先获取到向量库中的所有索引信息,再进行分组,使用多个协程进行并发查询,以提高查询速度。
另外,直接使用问题明文进行查询时,在langchain封装的similarity_search内部会调用embedding_query对问句进行向量化,如果通过多个索引进行检索时,这个流程也会调用多次,所以在这个场景下,需要提前对问题进行向量化,再调用similarity_search_by_vector进行相似度查询。
召回方式主要有两种,即向量召回和关键词召回。向量召回是将查询词转化为向量,然后利用该向量在向量数据库中检索相似数据,这种方式在处理语义相关的查询时十分有效,比如在查找与特定教学方法相关的教案资料时,可准确找到相似概念的内容。关键词召回则是先对查询词进行分词,然后在 ES 中检索相似数据,适用于基于特定关键词的精确检索,例如查找某一学科的特定知识点相关的教案素材。
相似度检索优化
相似度的检索如果只是单纯获取top K数据的话,可能会过滤出一些不太相关的数据,虽然这些数据后续都会提交给LLM进行再次的判断,但是无关数据可能也会影响到LLM的理解从而导致获取的结果不够准确。这里我们就在思考,如何判断数据的相似性,只把相似度比较接近的数据过滤出来?
比如:使用的某个向量库,默认采用L2距离进行向量相似度的计算,也就是向量空间中两个不同坐标的相对距离。从图中可以看出,这个距离的取值范围是[0, +∞)
通过增加多轮测试数据对比,根据每组数据返回的L2距离和实际内容的相关性,得出一个L2距离的经验阈值,根据该阈值再过滤出相似度较高的数据。
在测试的过程中,发现部分存在相关性的数据,但是由于描述信息过长导致最终得出的L2距离较大(比如内存泄漏的问题单信息,描述中会有较多的堆栈数据),无法满足阈值。对于这类数据当前采取对描述信息进行精简、格式归一化等措施,确保在数据预处理阶段,尽量保留有效数据,排除不相关的数据干扰。
重排操作是对召回结果重新排序,把相关性更高的结果排在前面,让最符合教案编写需求的内容优先呈现。过滤则是依据相似性分数、关键字、元数据等因素,剔除不符合要求的结果,最终将经过筛选的结果返回,提高内容检索的质量和效率。
当首次返回的结果质量欠佳时,系统会结合返回的结果以及当前的查询词,再次进行一次完整的检索,最终将更符合要求的结果返回,保障 AI 写教案时能获取到高质量的素材。
在整个业务流程中,意图识别和各个任务从向量库中获取到相似数据后,需要结合外部插件,记忆系统,写作范式,规则匹配等结果,基于 AI 决策的动态选择当前最适合的提示词模板,来请求LLM获取预期的数据。如何写好提示词工程,可以参考:Prompt工程指南和17种常见提示词框架
初始判断:
检查是否是第一行,是的话直接生成完整标题的 Prompt。
否则,继续判断是否为新段落。
新段落判断:
如果是新段落,进一步检查上一段是否为短句。
是短句:根据小标题生成内容 Prompt。
不是短句:判断后文是否为短句,若是,AI 判断是否生成小标题;若否,AI 判断是否继续写作思路。
写作思路生成:
如果需要继续写作,则判断是否生成小标题。
是:生成小标题的 Prompt。
否:判断是否继续生成正文或其他观点。
是:生成其他观点的 Prompt。
最终输出:
所有步骤组合后,将 Prompt 与知识库整合,生成最终 Prompt。
3、常见的 Copilot 类型
AIGC已经逐步工具化,未来“人+AI 助理”将成为协同模式,融入到工作和生活中:
代码助手(Code Copilot)
功能:帮助开发者编写代码、自动补全、错误检查、代码重构、建议功能等。
典型产品:
GitHub Copilot:基于OpenAI Codex模型,崩溃开发者提供代码自动补全、文档建议、代码片段生成等功能。
Tabnine:一款AI驱动的代码补全工具,支持多种编程语言,适用于IDE环境。
Kite:为Python开发者提供智能代码补全,增强开发效率。
2、智能写作助手(Writing Copilot)
功能:辅助写作任务,包括文案生成、语法修正、文章结构建议、内容优化等。
典型产品:
语法:提供检查、拼写建议、语法风格建议等,帮助用户优化写作质量。
OpenAI GPT系列(如ChatGPT):可以为用户生成创意文案、文章段落、写作提示等,支持多种语言和写作风格。
Microsoft Editor:一个智能写作助手,集成在 Microsoft Office 和 Outlook 中,用于语法检查和文章优化。
WPS
ima
3、语音助手(语音副驾驶)
功能:通过语音识别和自然语言处理技术,辅助用户管理日常任务,如日程安排、信息查询、设备控制等。
典型产品:
:智能家居控制、音乐播放、购物等。 Amazon Alexa
:语音搜索、导航、设备控制等。 Google Assistant
Apple Siri:语音助手,帮助用户执行日常任务,如发送信息、设置提醒、通话等。
4、财务助理(财务副驾驶)
功能:帮助用户进行个人或企业的财务规划、支出跟踪、投资建议等。
典型产品:
Mint:个人财务管理工具,帮助用户追踪收入、开支、预算等。
Wealthfront:提供自动化投资顾问服务,帮助用户进行投资组合管理。
5、视频生成助理
典型产品:海螺、即梦、runwa
6、图片生成助理
典型产品:SD 、mj、即梦
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-05-09
2024-07-07
2024-07-23
2024-07-01
2024-06-24
2024-06-08
2024-06-05
2024-06-21
2024-07-11
2024-12-26
2024-12-20
2024-12-15
2024-11-12
2024-11-11
2024-10-29
2024-10-22
2024-10-18