main
HuangHai 4 weeks ago
parent 6490ee9677
commit 611a401f71

@ -130,64 +130,3 @@ analysis-ik
``` ```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623133924355.png) ![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623133924355.png)
## 三、安装 $Kibana$
**1、下载 $kibana$**
```sh
# 下载地址
https://www.elastic.co/downloads/past-releases/kibana-9-0-2
# 下载
cd /usr/local
wget https://artifacts.elastic.co/downloads/kibana/kibana-9.0.2-linux-x86_64.tar.gz
tar -xvf kibana-9.0.2-linux-x86_64.tar.gz
# 获取token
curl -k -X POST -u elastic "https://localhost:9200/_security/service/elastic/kibana/credential/token"
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623142510684.png)
```sh
# 返回的token
AAEAAWVsYXN0aWMva2liYW5hL3Rva2VuX2k4bHBtNWNCX2YxTVY1dzdTRjNIOkF5MC1FRDNQU
# 编辑配置文件
cd /usr/local/kibana-9.0.2
vi config/kibana.yml
```
**内容**
```yaml
server.port: 5601
server.host: "0.0.0.0"
server.name: "mykibana"
elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.serviceAccountToken: "AAEAAWVsYXN0aWMva2liYW5hL3Rva2VuX2k4bHBtNWNCX2YxTVY1dzdTRjNIOkF5MC1FRDNQUWFPZmY2QmIxeTV4QWc"
elasticsearch.ssl.verificationMode: none
i18n.locale: "zh-CN"
xpack.security.encryptionKey: Hz*9yFFaPejHvCkhT*ddNx%WsBgxVSCQ # 自己随意生成的32位加密key
xpack.security.session.idleTimeout: "30m"
```
**3、启动$kibana$**
```sh
nohup ./bin/kibana --allow-root &
# 如果一直5601被 TIME_WAIT,可以结束它
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
sysctl -p
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623143049742.png)
```
elastic
jv9h8uwRrRxmDi1dq6u8
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623143126278.png)

@ -1,18 +1,5 @@
**向量化模型**:
- SentenceModel('shibing624/text2vec-base-chinese'),专为中文文本设计的句子嵌入模型,用于将查询和文档转化为向量表示。
```sh
# 下载地址
https://huggingface.co/shibing624/text2vec-base-chinese
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623151428754.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623151547922.png) ![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623151547922.png)
上述架构图展示了一个垂直的层次结构,描述了系统的核心组件及其连接关系,自上而下解读如下: 上述架构图展示了一个垂直的层次结构,描述了系统的核心组件及其连接关系,自上而下解读如下:
@ -55,104 +42,3 @@
Gradio 提供友好界面FSCrawler 确保数据摄取的自动化,而公网接口则扩展了系统的应用场景。 Gradio 提供友好界面FSCrawler 确保数据摄取的自动化,而公网接口则扩展了系统的应用场景。
检索增强生成RAG简单来说就是**先从一大堆文档中找到跟用户问题相关的内容,然后用大语言模型把这些内容整理成自然、易懂的回答**。 检索增强生成RAG简单来说就是**先从一大堆文档中找到跟用户问题相关的内容,然后用大语言模型把这些内容整理成自然、易懂的回答**。
### 4. 知识库智能问答系统代码解读
以下是实现该系统的一般步骤与代码思路,具体代码放到[死磕Elasticsearch知识星球](https://jishuzhan.net/article/1898217914180947969)。
#### 4.1 文档摄取
使用 FSCrawler 扫描本地文件并索引到 Elasticsearch
```sh
fscrawler --config_dir /path/to/config job_name
```
配置文件需指定文档路径和 Elasticsearch 索引名称。
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623151939865.png)
#### 4.2 向量化
利用 `shibing624/text2vec-base-chinese` 对文档和查询进行[向量化](https://jishuzhan.net/article/1898217914180947969)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623151957522.png)
```python
from text2vec import SentenceModel
model = SentenceModel('shibing624/text2vec-base-chinese')
# 文档向量化并存入 Elasticsearch
for doc in documents:
vector = model.encode(doc['text'])
es.index(index='knowledge_base', body={'text': doc['text'], 'vector': vector})
```
#### 4.3 查询处理与检索
将用户查询向量化并在 Elasticsearch 中执行相似性搜索,这里本质做的是关键词匹配+向量检索的组合方式。
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623152024785.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623152054522.png)
#### 4.4 回答生成
将查询和检索结果传递给 Qwen2.5-14b 生成回答:
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623152107385.png)
```python
from ollama import Client
ollama = Client()
context = "\n".join([doc['_source']['text'] for doc in results['hits']['hits']])
prompt = f"根据以下内容回答问题:\n{context}\n问题{query}"
response = ollama.generate(model='qwen2.5:14b', prompt=prompt)
answer = response['text']
```
#### 4.5 Gradio 界面
通过 Gradio 实现交互:
```python
import gradio as gr
def qa_system(query):
# 查询处理、检索、生成逻辑
return answer
interface = gr.Interface(fn=qa_system, inputs="text", outputs="text")
interface.launch()
```
上述步骤展示了从数据摄取到回答生成的完整流程,体现了系统的模块化设计。
### 5. 知识库智能问答系统待改进和展望
为进一步提升系统性能与用户体验,可考虑以下改进方向:
- **模型优化**:
- 对 Qwen2.5-14b 进行领域特定微调,提升对知识库内容的理解能力。
- 换成 DeepSeek 模型做对比。
- **向量化改进**:
- 尝试其他中文嵌入模型或微调 `text2vec`,提高向量表示的语义准确性。
- **文章切分力度**:
- 当前大家看到一章内容一个文档,效果可以。
- 但如果更细化为一小节内容一个文档导入 Elasticsearch是不是更好呢都有待进一步验证
------
### 结语
基于 Qwen2.5-14b 与 Elasticsearch 的大数据知识库智能问答系统,通过向量检索与生成式 AI 的检索增强 RAG 结合,为用户提供了高效、精准的信息获取途径。
无论是技术架构的清晰性还是实测效果的可靠性该系统都展现了检索增强RAG 在知识管理领域的巨大潜力。
视频讲解地址https://t.zsxq.com/E1toS

Loading…
Cancel
Save