magic 发布的文章

Milvus的安装主要对内存要求比较高,如果你本机日常使用后,还剩余大于8G内存,可以本地安装,我本机不够内存,不建议本地安装,服务器购买2核8G,或者4核8G都行。

Milvus的本地安装教程网上有很多,我选择使用docker镜像安装。 阿里、腾讯等厂家有镜像,我们基于镜像创建好数据库即可。

因为我用ucloud 服务器比较多,这里教程基于ucloud 云主机搭建。打开控制台,创建主机这里注意,不要选AMD CPU,选Intel 就好了。

等个几分钟,显示运行中,就可以登录数据库了

Milvus登录进入是没有密码的,执行命令

[root@10-10-121-239 ~]# milvus_cli

会显示



  __  __ _ _                    ____ _     ___
 |  \/  (_) |_   ___   _ ___   / ___| |   |_ _|
 | |\/| | | \ \ / / | | / __| | |   | |    | |
 | |  | | | |\ V /| |_| \__ \ | |___| |___ | |
 |_|  |_|_|_| \_/  \__,_|___/  \____|_____|___|


Learn more: https://github.com/zilliztech/milvus_cli.


milvus_cli >

表示已经成功登录数据库,注意的是,这里显示并不跟redis或其他数据库一样,这里命令行进入,只是说明你进入了命令模式,并不代表你已经连接成功数据库,例如我们输入,显示集合

list collections


提示这个,我们输入connect ,即可连接数据库

milvus_cli > connect
Connect Milvus successfully.
+-------+-----------+
| Host  | 127.0.0.1 |
| Port  |   19530   |
| Alias |  default  |
+-------+-----------+

连接上,我们就可以执行 list collections。

milvus\_cli工具,看github 地址已经2年没更新了,不是很好用。例如AI给出的一些命令,基本不存在


这几个命令都不存在,大家使用的时候,尽量输入命令 --help 来看支持哪些命令

由于milvus\_cli 十分难用,这里建议使用开源可视化工具Attu

使用 docker 安装 Attu:

docker run -p 8000:3000 -e HOST_URL=http://{ attu IP }:8000 -e MILVUS_URL={milvus server IP}:19530 zilliz/attu:latest

其中, attu IP 表示运行 attu 环境的 IP 地址, milvus server IP 是运行 Milvus 环境的 IP 地址。

启动成功后的界面如下图所示,输入正确的 Milvus IP 及端口就能进入 Attu 了!

collection的创建和数据导入

create collection -c book -f book_id:INT64:book_id -f word_count:INT64:word_count -f book_intro:FLOAT_VECTOR:2 -p book_id import -c book 'https://raw.githubusercontent.com/milvus-io/milvus_cli/main/examples/user_guide/search.csv' 

官方参考文档:

[https://milvus.io/docs/v2.2.x/create\_collection.md](https://milvus.io/docs/v2.2.x/create\_collection.md)

[https://milvus.io/docs/insert\_data.md](https://milvus.io/docs/insert\_data.md)

这样,我们一个Milvus 的服务器环境就已经配置好了

隔了一个月才更新,最近一个月其他工作在忙, 这个项目也在继续推进,由于比较赶,就没写教程了。 我们来看下,这一个月的最终效果。

首先我们问标准AI “给些1000字的小说”
这个是AI给的小说内容。

当一个迷雾笼罩的夜晚,寂静的小镇上传来了一阵低沉的咆哮声。这个小镇平时安宁祥和,没有人能够想象到会发生什么令人心惊胆战的事情。

一直生活在小镇上的瑶瑶,是一个极具好奇心的女孩。听到咆哮声后,她的好奇心被激发了起来。她穿上厚实的外套,戴上帽子,决定去探个究竟。

迷雾浓密,视野极为有限。瑶瑶小心翼翼地走着,心中却不由自主地产生了一丝紧张。不时有树叶沙沙作响,又仿佛有什么不可名状的东西在暗处窥视着她。

在走了一段时间后,她终于看到了远处的一点亮光。她加快了脚步,希望能够尽快弄清楚这个声音的来源。当她靠近一座破旧的废弃建筑时,才发现声音的来源竟然是一只小猫。

这只小猫瘦弱的身体在夜风中颤抖着,发出了那咆哮声。瑶瑶心生怜悯,小心地靠近那只小猫。她发现小猫受伤了,可能是被什么东西袭击了。

瑶瑶忍不住揉了揉眼睛,为了确保她没有幻觉。这只小猫受伤的地方起了一道金色的闪电状痕迹,散发着微弱的光芒。奇怪的事情发生了,她感觉到自己的身体也在发出同样的光芒。

她小心翼翼地用手触摸那道金色闪电状的伤口,奇异的感觉传遍全身。突然,她感到自己像是被一股强大的力量包裹住了,她的身体悬浮在空中,远离了地面。

小猫也随着她一起悬浮了起来。瑶瑶不知道发生了什么,但她感到一种前所未有的力量在自己的体内涌动。她不再害怕,相反,她感到了一种前所未有的自信和勇气。

她开始控制这股力量,使自己在空中舞动起来,像一只自由翱翔的鸟儿一样。她满怀喜悦地舞动着,仿佛已经忘记了这个小镇和这个世界。

然而,她突然想到了小猫。她将目光投向小猫,小猫似乎也受到了她的力量的影响,它也在空中自由自在地飞舞着。瑶瑶不禁惊叹,这只小猫也有着与她相同的力量。

瑶瑶抱起小猫,感受着它和自己的力量相互交融。她意识到,这并不是一场巧合,而是命中注定的相遇。她和小猫将会一起去探索更广阔的世界,用他们的力量改变命运。

从此之后,瑶瑶和小猫一起飞翔在天空中,带给人们无限的希望和信仰。他们的存在让这个小镇重新焕发出生机和活力,人们开始相信奇迹的存在。

瑶瑶和小猫的故事传遍了整个小镇,成为人们口口相传的童话。他们的名字成为了希望和奇迹的象征,激励着人们勇往直前。小镇从此发生了翻天覆地的变化,成为了一个繁荣兴旺的地方。

瑶瑶和小猫,就像是小镇的守护者,他们的超凡力量改变了整个小镇的命运。他们的故事将永远被人们传颂,直至永恒。

2. 我们把小说内容保存为txt文件

3.我们新增训练数据集,把这个txt给AI学习



4.学习完,查看文档分隔后的内容

5.我们测试文档记忆效果

我们可以看效果还是可以,文档提问基本都按照文档回复。

我们实现的是私域文档AI,由于我们不知道客户会问到什么问题,这时候如果遇到向量数据库匹配度非常低的问题,这时候,应该记录下来,让管理者添加这个问题相关答复。

例如问:主角的叔叔的儿子叫什么?目前小说没这个相关内容情况



我们增加一个他儿子的名称。


我们再次提问


我们可以看到,这样他能识别到我添加的小蔡。 这样就完善了文档的提问者,提出未知问题来完善文档。

python 多版本,window,mac,liunx都有不同的工具,由于现在国内墙太厉害,连docker镜像,python官方,github都访问不到,导致安装实在困难,今天我记录下如何安装

pyenv 是一个用于管理多个 Python 版本的工具。它允许你在同一台机器上安装和切换不同的 Python 版本,非常适合开发者在不同的项目中使用不同的 Python 版本。以下是 pyenv 的一些主要功能和使用方法:

主要功能

  1. 多版本管理

    • 允许你在同一台机器上安装多个 Python 版本(如 Python 2.7、Python 3.6、Python 3.8 等)。
    • 可以在不同的项目中使用不同的 Python 版本。
  2. 版本切换

    • 可以轻松地在不同的 Python 版本之间切换,无需手动修改环境变量。
  3. 隔离环境

    • 每个项目可以有自己的 Python 版本,不会相互干扰。
  4. 插件支持

    • 支持插件扩展,如 pyenv-virtualenv,可以与 virtualenv 结合使用,创建和管理虚拟环境。

正常来说即可
在 Linux 上安装

你可以使用以下命令安装 pyenv:

curl https://pyenv.run | bash

实际国内无法链接github原因,无法安装

这时候只能去找一个pyenv压缩包,或者你浏览器可以墙的话,直接浏览器github下载

例如安装python 3.12.2版本

pyenv install 3.12.2 -v 

实际是不成功的

然后网上找

export v=3.12.4; wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v 

结果也是失败的,其他几个国产的镜像也测了,不行

最终找到华为提供的这个可以

export v=3.12.4; wget https://mirrors.huaweicloud.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v

Xnip2024-09-12_12-20-32.jpg

当然除了pyenv,也可以用其他版本管理工具,例如conda

conda 是一个开源的包管理系统和环境管理系统,主要用于数据科学和机器学习领域。它可以管理多个 Python 版本和相关的依赖项。

# 安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 创建新环境并指定 Python 版本
conda create -n myenv python=3.12
conda activate myenv

Serverless实战驾校小程序【考题练习】三

介绍

上一节我们讲了,实现了分类、题目显示、进度条显示等功能,这节我们继续完善答题功能。由于开发时间比较紧,这里主要写实习思路,与核心代码。

image.png

这一节做顺序练习与模拟考试。都属于答题详细页面功能

image.png

这次进度条可以根据答题进度,显示进度。 这个也用了iview的一个插件, 目前样式没调整, 这个后面再说。

这一节主要实现了一些逻辑计算

逻辑一:记录学习题目进度

记录的核心代码,在提交保存的时候调用。当然,也可以在练习离开的时候触发,这里给了个按钮,点击保存即可保存学习记录

const AddLearning = ({ num, result, type = 1 }) => {
  let current = wx.Bmob.User.current()
  return new Promise((resolve, reject) => {
    const query = wx.Bmob.Query('learning');
    query.set('bSubjects', '1')
    query.set('bModels', '1')
    query.set('num', num)
    query.set('result', result)
    query.set('type', type)
    query.set('uid', current.objectId)
    query.save().then(res => {
      resolve(res)
    }).catch(err => {
      console.error(err)
      reject(err)
    })
  });
}

逻辑二:记录题目回答的对错

上面的变量result记录,格式请看上一节数据库格式说明,是题目的对错。这里点击一个选择就记录一次,我在页面data里面增加了一个items变量来保存。

选择答案执行以下代码,今天先实现单选,我们单选与多选,判断事件分开来做,这样便于逻辑管理

// 单选题
  handleFruitChange ({ detail = {}, target = {} }) {
    let questionInfo = this.data.questionInfo
    // 判断单选是否正确
    if (target.dataset.id) {
      console.log('ok')
      questionInfo.isOk = 1
    }

    this.setData({
      questionInfo: questionInfo,
      current: detail.value
    });

    // 单选自动跳到下一题
    this.statistical()

    // 显示第几道题
    this.setThisData(this.data.index)
    this.setData({
      index: this.data.index + 1,
      current: ''
    });
  },

逻辑三:答题相关统计

逻辑二讲了,记录对错,这里有一些统计需要拿出来计算,先做单选题,点击选择,判断是否正确, 如果正确,记录到结果对象 [{" id ":" XXX ', '0'}, {" id ":" XXX ", "1"}] ,0代表回答错误,1正确

例如错题个数、对题个数,页面提示,进度条进一步

statistical () {
    // 统计错题个数
    let questionErr = this.data.questionErr  //错题个数
    let questionOk = this.data.questionOk  //错题个数
    let questionInfo = this.data.questionInfo
    let items = this.data.items
    let arr = { "id": questionInfo.objectId, "o": 0 }

    let t = 'error', m = '回答错误'
    if (questionInfo.isOk === 1) {
      // o 0代表失败,1代表成功
      arr.o = 1
      questionOk = questionOk + 1
      t = 'success'
      m = '回答正确'
    } else {
      // 错误数+1
      questionErr = questionErr + 1

    }
    items.push(arr)

    // 提示
    $Message({
      content: m,
      type: t,
      duration: 2
    });


    //进度条
    let totalW = this.data.index / this.data.total
    totalW = (totalW * 100).toFixed(2);
    totalW = totalW < 1 ? 1 : totalW

    this.setData({
      items: items,
      questionErr: questionErr,
      questionOk: questionOk,
      totalW: totalW,
    });
  },

逻辑四:上一题下一题的实现

页面显示第几个题目,我们用数组的下面来记录,单电机下一题,我们记录回答对错,并且数组下标+1

// 翻页
  handlePageChange ({ detail }) {
    const type = detail.type;

    const current = this.data.current
    if (current == "") {
      console.log('空')
      $Toast({
        content: '请选择答案!',
        type: 'warning'
      });
      return;
    }


    this.statistical()

    if (type === 'next') {
      this.setThisData(this.data.index)
      this.setData({
        index: this.data.index + 1,
        current: ''
      });

    } else if (type === 'prev') {
      this.setData({
        index: this.data.index - 1,
        current: ''

      });
      this.setThisData(this.data.index)
    }
  },

逻辑五:引入模式概念

因为答题页面逻辑非常多,今天写这么多也没写完一般, 除了学习模式,后面还有模拟考试模式,这里不单独使用另外的页面来开发,统一在一个页面。 所以,我们在页面data里加入model变量,代表模式。

/**

 \* 这里有个模式, 练习模式,与模拟考试模式 

 \* model  1.练习模式  2.模拟考试考试

 \* 练习模式查询出所有数据练习

 \* 模拟考试 随机100题  计算打分

 */


总结

今天练习模式里面的单项选择逻辑基本已经做好,明天将实现模拟考试,计算考试成绩等等功能

  • 源码交易介绍
  • 如何购买?
  • 如何读取到之前应用的数据?
  • 如何上线?

1. 源码交易介绍

解决问题:

  1. 对于开发者。
    开发者应用未盈利,或提交市场审核不通过,代码丢弃又可惜。可以发布到此交易市场,赚一些成本回来。
  2. 对于企业
    经常会有一些个人或企业团体需要做个跟某某APP或小程序一样的东西,如果已经有了这样的东西,可以很好的降低成本。
  3. 代码来源:主要开发者

2. 如何购买?

  1. 打开购买网址:https://www.bmob.cn/shop/index
  2. 选择自己需要的应用
  3. 支付

备注:购买后并不会立刻在自己账户下创建此应用功能的响应数据库结构,请看下一步。


家教小程序

image.png


3. 如何读取到之前应用的数据?

  1. 我们点击立刻查看进入购买项目列表https://www.bmob.cn/shop/getBuyProject
  2. 创建应用,看下面截图,此处创建的应用会复制购买的应用数据表结构。

image.png

如何上线?

  1. 在购买项目列表下载代码
  2. 使用微信开发者工具打开
  3. 修改app.js 初始化appid,改为自己的appid。
  4. Bmob平台设置自己微信appid,AppSecret
  5. 微信开发者工具发布上线

image.png


参数说明

  • AppID,小程序ID,填写后可通过Bmob服务端获取该值
  • AppSecret,小程序密钥,填写后可通过Bmob服务端获取该值
  • MchID,商户号,小程序开发接入微信支付需填写此项
  • Key,商户支付密钥,小程序开发接入微信支付需填写此项