微信扫码
与创始人交个朋友
我要投稿
MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。
开箱即用:
1、30 分钟内即可上线基于本地大模型的知识库问答系统,
2、支持直接上传文档、自动爬取在线文档,支持文本自动拆分、向量化;
3、支持零编码快速嵌入到第三方业务系统。
• 前端:Vue.js
• 后端:Python / Django
• LangChain:LangChain
• 向量数据库:PostgreSQL / pgvector
• 大模型:Azure OpenAI、OpenAI、百度千帆大模型、Ollama、通义千问、Kimi、智谱 AI、讯飞星火
检索器通过知识数据库搜索嵌入彼此接近的向量,即最近的邻居,因为它们是相似的文本。在用户提出查询的情况下,首先对其进行嵌入,然后与相似的嵌入匹配。用于找出不同向量有多相似的常用测量是余弦相似度,它基于两个向量之间的角度。
我们可以使用其他方法来测量相似度,包括欧几里得距离,这是向量端点之间的直线距离,以及点积,它测量两个向量对应元素的乘积之和。
在进行检索时,首先需要为知识库构建一个搜索索引。索引存储我们的嵌入,并能在大型数据库中快速检索最相似的块。可以使用以下代码在本地创建索引:
from sklearn.neighbors import NearestNeighbors
embeddings = flattened_df['embeddings'].tolist()
# 创建搜索索引
nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings)
# 查询索引,可以使用kneighbors方法
distances, indices = nbrs.kneighbors(embeddings)
查询数据库后,可能需要按照相关性从高到低对结果进行排序。重新排序的LLM使用机器学习来提高搜索结果的相关性,通过从最相关的排序。使用Azure AI Search,重新排序会自动使用语义重新排序器为您完成。示意代码:
# 查找最相似的文档
distances, indices = nbrs.kneighbors([query_vector])
# 打印最相似的文档
for i in range(3):
index = indices[0][i]
for index in indices[0]:
print(flattened_df['chunks'].iloc[index])
print(flattened_df['path'].iloc[index])
print(flattened_df['distances'].iloc[index])
else:
print(f"DataFrame中未找到索引 {index}")
最后一步是将LLM融入进来,以便能够得到基于我们数据的响应。示意代码:
user_input = "什么是DHub?"
def chatbot(user_input):
# 将问题转换为查询向量
query_vector = create_embeddings(user_input)
# 查找最相似的文档
distances, indices = nbrs.kneighbors([query_vector])
# 将文档添加到查询中以提供上下文
history = []
for index in indices[0]:
history.append(flattened_df['chunks'].iloc[index])
# 组合历史记录和用户输入
history.append(user_input)
# 创建消息对象
messages=[
{"role": "system", "content": "你是一个帮助解答产品问题的AI助手。"},
{"role": "user", "content": history[-1]}
]
# 使用聊天完成生成回应
response = openai.chat.completions.create(
model="llama3:8b",
temperature=0.7,
max_tokens=800,
messages=messages
)
return response.choices[0].message
chatbot(user_input)
前置条件:
安装ollama和llama3。
然后docker一键安装。
docker run -d --name=maxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data 1panel/maxkb
首先,打开 MaxKB 界面 UI:
http://127.0.0.1:8080/ui/login#/
初始账号: admin
初始密码: MaxKB@123..
注意:填入本地http://127.0.0.1:11434/,提示:
策略是:
1、添加环境变量:OLLAMA_HOST=0.0.0.0:11434
2、cmd/ipconfig获取本地ip,我的是:http://192.168.31.151:11434/
关联刚才添加的知识库。
支持零编码快速嵌入到第三方业务系统。
Q:生成回答的质量不高,应该如何优化
A:一般有2个办法:
1、通过反复优化提示词。
2、使用更大的模型。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-08-22
基于开源MaxKB构建大语言模型的本地知识库系统
2024-08-08
无缝融入,即刻智能[2]:MaxKB内置强大工作流引擎,编排AI工作流程,满足多样化业务需求
2024-07-02
开源AI项目推荐:基于 LLM 大语言模型的知识库问答系统 MaxKB
2024-06-21
【16/100个AI应用体验】MaxKB,可能是当前最友好的国内开源知识库管理工具
2024-05-19
量化大模型在规模和精度上的能力 | 负面情绪刺激也能增强大模型?| 探索Softmax的前沿....
2024-04-28
MaxKB 添加本地大语言模型(LLM)创建智能问答应用
2024-04-28
AI | 基于 MaxKB+Ollama+Llama3 手把手从0-1构建本地私有化知识库
2024-04-25
操作教程丨MaxKB+Ollama:快速构建基于大语言模型的本地知识库问答系统
2024-04-25
2024-04-28
2024-04-28
2024-04-25
2024-07-02
2024-04-16
2024-04-23
2024-05-19
2024-05-05
2024-06-21