这是一个Java应用程序,用于将本地文本知识库上传到Qdrant Cloud向量数据库,并通过计划任务保持同步更新。
- 支持从本地目录读取TXT和MD格式的文本文件
- 使用OpenAI的嵌入模型将文本转换为向量
- 增量上传文件到Qdrant Cloud
- 自动定期更新知识库(默认每10天一次)
- 使用文件内容哈希检测文件变更
- 支持并行处理多个文件
- 完整的日志记录
- 字段名适配Spring AI框架
每个文档在Qdrant中存储的结构:
{
"id": "uuid格式的文档ID",
"vector": [1536维的向量数组],
"payload": {
"title": "文件名",
"doc_content": "文档内容(适配Spring AI)",
"sourcePath": "源文件路径",
"contentHash": "文件内容MD5哈希值",
"lastModified": "最后修改时间"
}
}- Java 17或更高版本
- Maven 3.6或更高版本
- Qdrant Cloud账号及API Key
- OpenAI API Key
在src/main/resources/application.properties中配置以下参数:
# Qdrant Cloud配置
qdrant.url=https://your-instance.qdrant.tech
qdrant.api.key=your-api-key-here
qdrant.collection.name=knowledge_base
qdrant.vector.size=1536
# OpenAI配置
openai.api.key=your-openai-api-key
openai.embedding.model=text-embedding-ada-002
# 知识库配置
knowledge.base.directory=D:/knowledge_base
knowledge.base.extensions=txt,md
# 更新调度配置(每10天执行一次)
update.cron=0 0 0 */10 * ?
# 上传配置
upload.batch_size=100
upload.chunk_size=1000
mvn clean package这将在target目录下生成一个包含所有依赖的JAR文件。
java -jar target/qdrant-uploader-1.0-SNAPSHOT-jar-with-dependencies.jar- 修改配置文件中的参数,确保填入正确的API密钥和知识库目录
- 运行应用程序
- 应用程序会自动扫描指定目录下的文本文件,将其转换为向量并上传到Qdrant
- 应用程序会根据配置的cron表达式定期检查并更新知识库
- 首次运行会上传所有符合条件的文件
- 后续运行只会上传新增或修改过的文件
- 日志文件存储在
logs目录下 - 更新过程中保证服务可用性
- 如果使用其他嵌入模型,请确保调整向量大小配置