From da071258e2e4a7e99865967a1514fb05f2b2422b Mon Sep 17 00:00:00 2001 From: weixin_44463441 Date: Fri, 12 Jan 2024 11:59:20 +0800 Subject: [PATCH] Auto Commit --- src/App.vue | 27 +++++--- src/components/content/index.vue | 114 ++++++++++++++++++++++--------- src/js/config.js | 3 +- src/js/ragDefaultContent.js | 59 ++++++++++++++++ src/js/repEs.js | 6 +- 5 files changed, 165 insertions(+), 44 deletions(-) create mode 100644 src/js/ragDefaultContent.js diff --git a/src/App.vue b/src/App.vue index c6dd120..53bb175 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,23 +1,23 @@ -

思考中...

+

+ +

@@ -81,8 +83,8 @@
-
- +
+ @@ -97,9 +99,14 @@ --> + + + @@ -299,7 +306,7 @@ export default { if (this.indexClient) { this.indexClient.query(newPrompt).then(res => { - this.getAnswer(res, newPrompt, currentMsg) + this.getAnswer(res?.list, newPrompt, currentMsg) }).catch((err) => { this.getAnswer(null, newPrompt, currentMsg) }) diff --git a/src/components/content/index.vue b/src/components/content/index.vue index d909193..7ecd729 100644 --- a/src/components/content/index.vue +++ b/src/components/content/index.vue @@ -3,25 +3,26 @@
-
- - - +
+ + +
- 添加内容 - +
-
+
- 共{{ data?.total }}条数据 + 共 {{ data?.total }} 条数据 +
@@ -38,14 +39,21 @@
- +
- +
@@ -56,6 +64,8 @@ import Config from '../../js/config' import RepEs from '../../js/repEs' import { MessagePlugin } from 'tdesign-vue-next'; +import ragDefaultData from '../../js/ragDefaultContent' + const esClient = new RepEs(Config.getData().data.ext) export default { @@ -64,51 +74,91 @@ export default { }, data() { return { + showLoadDataDialog:false, newContent: '', list: [], data: {} } }, + mounted() { + this.search() + }, methods: { - add () { + add (functionInputContent) { - esClient.add(this.newContent).then(res=>{ - MessagePlugin.success({ content: '添加成功', placement: 'center' }) + let content = this.newContent + let showProcess = true + if (typeof functionInputContent === 'string' && functionInputContent) { + content = functionInputContent + showProcess = false + } + + if (content.length < 10) { + MessagePlugin.error({ content: '内容长度需要超过10个字符', placement: 'center' }) + } else { + esClient.add(content).then(res=>{ + this.newContent = '' + + if (showProcess) { + MessagePlugin.success({ content: '添加成功', placement: 'center' }) + this.reloadData() + } + - this.$nextTick(() => { - this.search() - }) }) + } + }, search () { esClient.query(this.newContent).then(res => { - console.info(res) - this.data = res - - }) + console.info(res) + this.data = res + + }) + }, updateItem (item) { - esClient.update(item._id, item.content).then(res => { - MessagePlugin.success({ content: '更新成功', placement: 'center' }) - this.$nextTick(() => { - this.search() - }) }) + if (item.content && item.content.length > 10) { + esClient.update(item._id, item.content).then(res => { + MessagePlugin.success({ content: '更新成功', placement: 'center' }) + this.reloadData() + }) + } else { + MessagePlugin.error({ content: '内容长度需要超过10个字符', placement: 'center' }) + } + + }, + reloadData (waitMs=600) { + this.$nextTick(() => { + setTimeout(() => { + this.search() + }, waitMs) + + }) }, deleteItem (item) { esClient.delete(item._id).then(res => { MessagePlugin.success({ content: '删除成功', placement: 'center' }) - this.$nextTick(() => { - this.search() - }) + this.reloadData() }).catch(() => { - this.$nextTick(() => { - this.search() - }) + this.reloadData() }) }, + loadDefaultContent () { + + this.showLoadDataDialog = false + + MessagePlugin.loading({ content: '正在导入,请稍等...', placement: 'center', duration: 2000 }) + ragDefaultData.forEach(item => { + this.add(item) + }) + + this.reloadData(2000) + + } } } diff --git a/src/js/config.js b/src/js/config.js index b3fc75f..df16e4d 100644 --- a/src/js/config.js +++ b/src/js/config.js @@ -12,7 +12,8 @@ const prompt_template = ` ` // 欢迎语,用户打开时自动发送给用户 -const welcome_text = `你好,欢迎使用私人知识库,知识库仅供测试,数据可能随时被删除,请不用存放重要数据。 +const welcome_text = `欢迎使用私人知识库,知识库仅供测试,数据可能随时被删除,请不用存放重要数据。 +"知识库"页面用来管理内容,你可以导入样例数据快速体验,也可以添加自己的数据。 注意:结果由AI生成,可能存在不符合实际的联想内容,请注意甄别! ` diff --git a/src/js/ragDefaultContent.js b/src/js/ragDefaultContent.js new file mode 100644 index 0000000..7cc4889 --- /dev/null +++ b/src/js/ragDefaultContent.js @@ -0,0 +1,59 @@ +const content = [ +`CSDN公司简介 +董事长/创始人/CEO:蒋涛 +CSDN使命:成就一亿技术人 +CSDN愿景:成为技术人交流和成长的家园 +官网地址: https://www.csdn.net/ +CSDN(中国开发者网络)创立于1999年,是全球知名中文开发者网站。秉承成就一亿技术人的使命,为IT技术人成长及科技企业发展,提供开发者生态的全方位服务。CSDN在社区基础上,通过知识云、人才云、开发云三大服务,赋能开发者、研发团队及科技企业在IT知识学习、人才招聘、研发效能与协同管理等方面的高速成长与发展。 +人人都是开发者,家家都是技术公司,CSDN全力前行,共建中国十万亿技术大生态! + +公司主要数据: +全球编程类网站排名第7(来源:Similarweb 2022.05) +注册用户超过3500万,覆盖90%的中文开发者 +超过1000家企业客户和合作伙伴 +新媒体矩阵粉丝数量超过3100万 +员工近800名,分布在北京、长沙、上海、深圳、杭州、成都等城市,并在美国硅谷常设办事处 +`, + +`InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松完成。 +InsCode 的 Ins 是 Inspiration,意思是创作、寻找有灵感的代码。 +官网地址:https://inscode.csdn.net/ + +开发团队介绍: +是由CSDN的开发云团队负责开发的,负责人是梁灏。 + + +InsCode主要功能包括: + 1. 云端开发环境,免费提供的 2 核/4 GB 开发环境; + 2. 丰富的模板,如 Python、Java、HTML/CSS/JS、PHP、Go等语言模板的支持: + 3. 内置AI辅助编程,可以实现添加注释、解释代码、完成代码、寻找错误、优化代码、添加测试、代码提问等 AI 功能。 + 4. 社区,开发的项目,可以发布到社区,每个发布的作品都是开源的,所以 InsCode 也是一个很好的学习平台。 + 5. 快速部署,可以一键部署开发的应用,或者直接部署 GitHub 应用。部署后提供独立的域名访问,并永久在线。 + +使用场景介绍:随时随地写代码,快速启动项目​,实时调试网页​,一键部署​,GPU 云容器​。 +`, + + +`gitcode gitCode介绍 +GitCode是CSDN战略打造的一站式开源代码协作平台 +官网地址:https://gitcode.com/ +平台定位与核心场景: +1.代码托管平台:解决开发者与企业代码协作与存储场景 +2.开源社区:提供开源项目运营平台,推广开源项目,获取开源使用者和贡献者 +3.软件开发生产线:帮助开发者与企业解决研发流程与提升研发效能 +4.AI开源搜索: 面开发者的 AI 开源搜索工具,目的是为了帮助开发者快速寻找开源项目代码、解决开发问题和快速寻找答案,帮助开发者提升效率的同时利用代码仓托管能力建立自己个人知识库 +`, + + +`RAG (Retrieval Augmented Generatio) 检索增强生成 +检索增强生成 (RAG) 是一种使用来自私有或专有数据源的信息来辅助文本生成的技术。它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型 (LLM),此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。 + +通过从更多数据源添加背景信息,以及通过训练来补充 LLM 的原始知识库,检索增强生成能够提高搜索体验的相关性。这能够改善大型语言模型的输出,但又无需重新训练模型。额外信息源的范围很广,从训练 LLM 时并未用到的互联网上的新信息,到专有商业背景信息,或者属于企业的机密内部文档,都会包含在内。 + +RAG 对于诸如回答问题和内容生成等任务,具有极大价值,因为它能支持生成式 AI 系统使用外部信息源生成更准确且更符合语境的回答。它会实施搜索检索方法(通常是语义搜索或混合搜索)来回应用户的意图并提供更相关的结果。 +` + + +] + +export default content \ No newline at end of file diff --git a/src/js/repEs.js b/src/js/repEs.js index 366ab23..ce2ed19 100644 --- a/src/js/repEs.js +++ b/src/js/repEs.js @@ -105,12 +105,16 @@ class RepEs { } update (id, content) { + debugger const url = this.index_url + '/' + this.index_name + '/_doc/' + id const token = this.token return new Promise(function(resolve,rejcet){ - axios.put(url, {content: content}).then(res => { + axios.put(url, { + user_token: token, + content: content + }).then(res => { console.info(res) resolve(res) -- GitLab