admin 管理员组

文章数量: 1184232

1.前言

这是一篇小白一步步体验AI问答的笔记,中间肯定走了很多的弯路,也不够高效,但是希望能对同样摸索着前行的小白有帮助,大神们可以无视。

2.背景

使用公开的医疗问答数据库,搭建一个可以进行健康问答的智能体。

3.开发环境

WINDOWS系统,电脑已经安装了Anaconda作为开发环境,代码运行在Jupyter Lab。

4.获取数据

(见上一篇)

5.使用百度千帆搭建知识库

百度千帆 AppBuilder 是百度智能云推出的企业级大模型应用开发管理平台,提供开箱即用的RAG/Agent/工作流/UI Builder等应用开发工具链,预置了百度AI搜索、iRAG等应用开发特色组件,以及文档理解、图像理解、语音识别等传统AI组件。

目前AppBuilder也为个人开发者体提供了免费体验额度,官方的帮助文档、视频都很多,可以满足我们这次学习和验证的需求。

5.1 准备知识库文件源

百度千帆导入知识库文件的时候,txt文件最大不能超过10MB,最多100个。

在前一个阶段,我们下载了近500MB的问答数据库,在jupyter lab运行下面的代码,把问答库进行切分。

import os

def split_large_file(file_path, max_size=10*1024*1024):
    """
    将大型问答文件切割为多个不超过指定大小的小文件,确保每个小文件包含完整的问答对
    
    参数:
    file_path (str): 源文件路径
    max_size (int): 每个小文件的最大大小(字节),默认为10MB
    """
    if not os.path.exists(file_path):
        print(f"错误: 文件 '{file_path}' 不存在")
        return
    
    file_dir, file_name = os.path.split(file_path)
    base_name, ext = os.path.splitext(file_name)
    
    part_num = 1
    current_size = 0
    current_file = None  
    current_qa = []      
    question_prefix = "问题"  
    answer_prefix = "答案"  

    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            for line in f:
                # 检测是否是新的问题行(开始新的问答对)
                if line.startswith(question_prefix) and current_qa:
                    # 计算当前问答对的字节大小
                    qa_size = sum(len(l.encode('utf-8')) for l in current_qa)
                    
                    # 判断是否需要创建新文件
                    if current_size + qa_size > max_size:
                        # 关闭当前文件
                        if current_file:
                            current_file.close()
     

本文标签: 自己的 知识库 问答 step