如何打造垂域大模型是一个重要落地方向。
如何打造个人专属的大模型应用也是重要的问题。
RAG 外挂一个知识库
优势:成本低,实时更新
劣势:能力受基座模型影响大,RAG每次需要将检索文档和问题提交给大模型,极大占用上下文限制。
Finetune 轻量级的微调
优势:可以充分拟合个性化数据;个性化大模型,依然具有广大的通用能力
劣势:无法解决实时更新成本问题。算力、数据都需要成本。
基于 InternLM 和 LangChain 搭建你的知识库 github 代码
最后示例代码
import gradio as gr
from utils import Model_center# 实例化核心功能对象
model_center = Model_center()
# 创建一个 Web 界面
block = gr.Blocks()
with block as demo:with gr.Row(equal_height=True): with gr.Column(scale=15):# 展示的页面标题gr.Markdown("""<h1><center>InternLM</center></h1><center>书生浦语</center>""")with gr.Row():with gr.Column(scale=4):# 创建一个聊天机器人对象chatbot = gr.Chatbot(height=450, show_copy_button=True)# 创建一个文本框组件,用于输入 prompt。msg = gr.Textbox(label="Prompt/问题")with gr.Row():# 创建提交按钮。db_wo_his_btn = gr.Button("Chat")with gr.Row():# 创建一个清除按钮,用于清除聊天机器人组件的内容。clear = gr.ClearButton(components=[chatbot], value="Clear console")# 设置按钮的点击事件。当点击时,调用上面定义的 qa_chain_self_answer 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。db_wo_his_btn.click(model_center.qa_chain_self_answer, inputs=[msg, chatbot], outputs=[msg, chatbot])gr.Markdown("""提醒:<br>1. 初始化数据库时间可能较长,请耐心等待。2. 使用中如果出现异常,将会在文本输入框进行展示,请不要惊慌。 <br>""")
gr.close_all()# 直接启动
demo.launch()