链载Ai

标题: 大模型RAG实战|基于ThinkDoc文档解析与融合检索能力,提升RAG效果 [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: 大模型RAG实战|基于ThinkDoc文档解析与融合检索能力,提升RAG效果

最近ThinkDoc智能知识库上线了。


个人与开发者都可以用。


对于个人,作为知识工作者或专业人士,我们可以把 ThinkDoc 作为自己的个人知识库。


在上传文档资料之后,我们可以通过智能对话、检索分析和专业写作等智能体直接交互,提升个人的工作效率。


对于开发者,我们可以把 ThinkDoc 作为团队或企业的知识库平台。


通过ThinkDoc丰富的 API 接口,调用强大的文档上传、解析、检索能力,然后与我们开发的RAG应用集成,提升企业级RAG应用的效果。


本文,我将给大家具体的操作指南。


1

创建第一个知识库


在使用ThinkDoc进行文档解析之前,首先需要创建一个知识库,步骤如下:


创建了知识库之后,ThinkDoc 支持4种方式,向知识库添加资料,分别是:上传文件、导入文件夹、新建笔记和导入网址。



1. 上传文件

ThinkDoc支持多种文件格式,包括PDF、Word、PPT等,支持多个文件批量上传,步骤如下:


2. 导入文件夹

ThinkDoc还支持从本地文件夹批量导入文件,步骤如下:

  • 在知识库页面,点击“导入文件夹”按钮。

  • 选择本地文件夹路径,系统会自动扫描文件夹中的所有文件并上传到知识库中。

  • 点击“导入”按钮,完成文件夹的导入。


3. 新建笔记

除了上传文件,你还可以在知识库中新建笔记。笔记可以包含文本内容,支持Markdown格式,步骤如下:



4. 导入网址

你还可以从网址导入文档。ThinkDoc会自动抓取网页内容并解析,步骤如下:


值得说明的是,并不是所有网址都可以成功抓取内容。


2

解析文档的两种模式


ThinkDoc提供了两种解析模式:深度解析和快速解析。


我们可以在 ThinkDoc 的设置页面,选择使用哪一种解析模式。选定后,文档解析将默认使用此模式。



1. 深度解析


深度解析是一种全面的文档分析方式,它不仅提取文档的文本内容,还保留了文档的完整结构和格式信息。



深度解析能提供更全面、更准确的文档解析,适合对解析质量要求较高的场景。由于需要调用各种模型进行处理,深度解析需要更多的算力、更多的时间来执行。


2. 快速解析


快速解析是一种专注于快速提取文档基础文本内容的方式,主要提取文档的核心文本信息,同时,尽可能保留文档中原本的格式与图片信息。



快速解析专注于提取核心文本内容,因此处理速度更快,对系统资源的消耗也较低。对于格式简单的文档(例如会议纪要、录音文稿等)或需要快速处理大量文档的场景,快速解析是一个理想的选择。


我们在知识库的文件列表中,可以看到刚刚上传的文件,处于“待解析”状态,此时我们点击操作栏的“开始解析”按钮,ThinkDoc 将开始解析此文件、分块、向量化后保存在向量数据库中。


当解析成功后,解析状态也随之改变。这时我们可以点击该文件,查看解析结果。



如上图所示,我们可以看到一个Docx文件,解析出 1547 个文本段落、51 个表格和 185 张图片。


在这个文件详情页面,我们还可以下载原文件、查看解析后的Markdown 格式文档,以及自动化提取的元数据,包括:名称、作者、摘要、关键词等。


3

在知识库中检索


ThinkDoc不仅提供了强大的文档解析功能,还集成了智能对话功能,能够在知识库中进行检索,基于检索到的内容进行智能问答。


通过设置不同的检索模式,用户可以更精准地获取所需信息。


ThinkDoc支持多种检索模式,包括:向量检索、混合检索和全文检索。



在智能对话、检索分析和专业写作这三个智能体中,我们都可以设置检索模式,来优化检索和生成效果。



例如,用户可以在对话设置中选择“向量检索”、“混合检索”或“全文检索”,并根据具体需求调整TopK、分数阀值、重排序等参数。


4

如何使用 API 接口


ThinkDoc提供了强大的API接口,使得开发者可以轻松地将文档解析和智能对话功能集成到自己的应用中。


https://doc.bluedigit.ai/api/redoc


ThinkDoc 的 API 文档地址为:https://doc.bluedigit.ai/api/redoc。


在开始集成之前,建议你仔细阅读 API 文档,了解各个接口的功能和参数。API 文档中详细介绍了如何上传文件、解析文档、检索知识库等功能。


以下是如何使用相关 API 的示例。


1. 获取API Key


首先,你需要获取一个 API Key。登录到 ThinkDoc ,点击左下角进入用户账号页面,创建自己的 API Key。你可以创建多个 API Key,方便在不同的项目中使用。


2. API接口:上传文件


我们可以通过用户界面或 API 接口,创建一个知识库,并获取知识库 ID,然后可以调用上传文件的接口,将指定路径的文件,上传到该知识库中。


代码示例如下:


importrequestsdefupload_file_to_kb(api_key,kb_id,file_path):"""上传文件到知识库Args:api_key:API密钥kb_id:知识库IDfile_path:本地文件路径Returns:dict:上传结果"""url=f"https://doc.bluedigit.ai/api/kb/{kb_id}/files"headers={"Authorization":f"Bearer{api_key}"}withopen(file_path,'rb')asf:files={'file'file_path.split('/')[-1],f,'application/octet-stream')}response=requests.post(url,headers=headers,files=files)ifresponse.status_code==200:returnresponse.json()else:print(f"上传失败:{response.status_code}-{response.text}")returnNone#使用示例api_key="td-your-api-key"kb_id="your-knowledge-base-id"file_path="/path/to/your/document.pdf"result=upload_file_to_kb(api_key,kb_id,file_path)ifresult:print(f"文件上传成功,文件ID:{result['uploaded_files'][0]['id']}")


3. API接口:文档解析


上传文件后,我们可以对该文件启动解析任务。代码示例如下:


defparse_file(api_key,kb_id,file_id):"""启动文件解析Args:api_key:API密钥kb_id:知识库IDfile_id:文件IDReturns:dict:解析任务信息"""url=f"https://doc.bluedigit.ai/api/kb/{kb_id}/files/{file_id}/parse"headers={"Authorization":f"Bearer{api_key}","Content-Type":"application/json"}response=requests.post(url,headers=headers)ifresponse.status_code==200:returnresponse.json()else:print(f"解析启动失败:{response.status_code}-{response.text}")returnNone#使用示例parse_result=parse_file(api_key,kb_id,"file_123456")ifparse_result:job_id=parse_result['job_id']print(f"解析任务已启动,任务ID:{job_id}")


4. API接口:检索信息


然后,我们可以对指定的知识库或文件,进行检索。代码示例如下:


defretrieve_content(api_key,query,kb_ids=None,file_ids=None,top_k=10,score_threshold=0.5):"""检索知识库内容Args:api_key:API密钥query:检索查询kb_ids:知识库ID列表file_ids:文件ID列表top_k:返回结果数量score_threshold:相关性阈值Returns:dict:检索结果"""url="https://doc.bluedigit.ai/api/retrieve"headers={"Authorization":f"Bearer{api_key}","Content-Type":"application/json"}data={"query":query,"retrieval_setting":{"top_k":top_k,"score_threshold":score_threshold,"query_type":"vector","rerank":False,"top_n":5}}ifkb_ids:data["kb_ids"]=kb_idsiffile_ids:data["file_ids"]=file_idsresponse=requests.post(url,headers=headers,json=data)ifresponse.status_code==200:returnresponse.json()else:print(f"检索失败:{response.status_code}-{response.text}")returnNone#使用示例#在知识库中检索result=retrieve_content(api_key=api_key,query="人工智能的发展趋势",kb_ids=["kb_123456"],top_k=5,score_threshold=0.7)ifresult:print(f"找到{len(result['records'])}条相关记录:")forrecordinresult['records']:print(f"-文件:{record['file_name']}")print(f"相关性:{record['score']}")print(f"内容:{record['text'][:100]}...")print()


如上所示,基于 ThinkDoc 提供的 API 接口,我们可以根据自己的需求,将ThinkDoc 的文档解析和融合检索功能,集成到自己的 RAG 应用中。


4

总结 & 下一步


ThinkDoc 先进的多模态文档解析与融合检索技术,为企业级 RAG 应用系统提供了强大的支持。


通过深度解析和快速解析两种模式,用户可以根据具体需求选择合适的解析方式,从而提高文档处理的效率和质量。


同时,ThinkDoc的智能对话功能和相关API接口,使得开发者可以轻松地将这些功能集成到自己的应用中,进一步提升RAG效果。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5