This commit is contained in:
xerrors 2024-08-30 11:54:21 +08:00
parent 65a8b06313
commit d89b7fdeec
5 changed files with 78 additions and 52 deletions

View File

@ -6,7 +6,19 @@
### 准备
1. 提供 API 服务商的 API_KEY并放置在 `src/.env` 文件中,参考 `src/.env.template`。默认使用的是智谱AI。
2. 配置 python 环境 `pip install -r src/requirements.txt`
2. 配置 python 环境 `pip install -r requirements.txt`
**如果不启用知识库可以jin**
```
FlagEmbedding==1.2.10
Flask==3.0.3
Flask_Cors==4.0.1
openai==1.35.10
python-dotenv==1.0.1
PyYAML==6.0.1
zhipuai
```
### 启动命令行模式

18
requirements.txt Normal file
View File

@ -0,0 +1,18 @@
dashscope==1.20.5
FlagEmbedding==1.2.11
Flask==3.0.3
Flask_Cors==4.0.1
llama_index==0.11.1
neo4j==5.23.1
openai==1.42.0
paddleocr==2.8.1
pymilvus==2.4.5
python-dotenv==1.0.1
PyYAML==6.0.2
qianfan==0.4.6
torch==2.4.0
tqdm==4.66.5
zhipuai==2.1.4.20230814
PyMuPDF
llama-index-readers-file
peft

View File

@ -8,46 +8,6 @@ from src.models.embedding import get_embedding_model
logger = setup_logger("DataBaseManager")
class DataBaseLite:
def __init__(self, name, description, db_type, dimension=None, **kwargs) -> None:
self.name = name
self.description = description
self.db_type = db_type
self.dimension = dimension
self.db_id = kwargs.get("db_id", hashstr(name))
self.metaname = kwargs.get("metaname", f"{db_type[:1]}{hashstr(name)}")
self.metadata = kwargs.get("metaname", {})
self.files = kwargs.get("files", [])
self.embed_model = kwargs.get("embed_model", None)
def id2file(self, file_id):
for f in self.files:
if f["file_id"] == file_id:
return f
return None
def update(self, metadata):
self.metadata = metadata
def to_dict(self):
return {
"name": self.name,
"description": self.description,
"db_type": self.db_type,
"db_id": self.db_id,
"embed_model": self.embed_model,
"metaname": self.metaname,
"metadata": self.metadata,
"files": self.files,
"dimension": self.dimension
}
def to_json(self):
return json.dumps(self.to_dict(), ensure_ascii=False)
def __str__(self):
return self.to_json()
class DataBaseManager:
def __init__(self, config=None) -> None:
@ -252,4 +212,45 @@ class DataBaseManager:
for db in self.data["databases"]:
if db.db_id == db_id:
return db
return None
return None
class DataBaseLite:
def __init__(self, name, description, db_type, dimension=None, **kwargs) -> None:
self.name = name
self.description = description
self.db_type = db_type
self.dimension = dimension
self.db_id = kwargs.get("db_id", hashstr(name))
self.metaname = kwargs.get("metaname", f"{db_type[:1]}{hashstr(name)}")
self.metadata = kwargs.get("metaname", {})
self.files = kwargs.get("files", [])
self.embed_model = kwargs.get("embed_model", None)
def id2file(self, file_id):
for f in self.files:
if f["file_id"] == file_id:
return f
return None
def update(self, metadata):
self.metadata = metadata
def to_dict(self):
return {
"name": self.name,
"description": self.description,
"db_type": self.db_type,
"db_id": self.db_id,
"embed_model": self.embed_model,
"metaname": self.metaname,
"metadata": self.metadata,
"files": self.files,
"dimension": self.dimension
}
def to_json(self):
return json.dumps(self.to_dict(), ensure_ascii=False)
def __str__(self):
return self.to_json()

View File

@ -1,6 +0,0 @@
FlagEmbedding==1.2.10
Flask==3.0.3
Flask_Cors==4.0.1
openai==1.35.10
python-dotenv==1.0.1
PyYAML==6.0.1

View File

@ -7,7 +7,7 @@
<a-button type="text" danger class="del-db" @click="deleteDatabse"><DeleteOutlined /></a-button>
</div>
<div class="top">
<div class="icon"><ReadFilled /></div>
<!-- <div class="icon"><ReadFilled /></div> -->
<div class="info">
<h3>{{ database.name }}</h3>
<p><span>{{ database.metadata?.row_count }} · {{ database.files?.length || 0 }}文件</span></p>
@ -15,7 +15,7 @@
</div>
<p class="description">{{ database.description }}</p>
<div class="tags">
<a-tag color="blue" v-if="database.embed_model">Embed: {{ database.embed_model }}</a-tag>
<a-tag color="blue" v-if="database.embed_model">{{ database.embed_model }}</a-tag>
</div>
<a-divider/>
<div class="pagebtns">
@ -476,8 +476,7 @@ onMounted(() => {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
padding-top: 10px;
padding-bottom: 10px;
padding: 10px;
background-color: var(--main-light-5);
border-bottom: 1px solid #E0EAFF;
@ -485,6 +484,8 @@ onMounted(() => {
height: auto;
font-size: 16px;
color: var(--c-text-light-1);
padding-left: 8px;
padding-right: 8px;
}
}
}