若问生涯原是梦,除梦里,没人知。

  • 2024-06-18

    一、文本向量化

    文本向量化:将文本信息表示成能够表达文本语义的向量,是用数值向量来表示文本的语义。

    词嵌入(Word Embedding):一种将文本中的词转换成数字向量的方法,属于文本向量化处理的范畴。

    向量嵌入操作面临的挑战包括:

    • 信息丢失:向量表达需要保留信息结构和节点间的联系。
    • 可扩展性:嵌入方法应具有可扩展性,能够处理可变长文本信息。
    • 维数优化:高维数会提高精度,但时间和空间复杂性也被放大。低维度虽然时间、空间复杂度低,但以损失原始信息为代价,因此需要权衡最佳维度的选择。

    常见的文本向量和词嵌入方法包括独热模型(One Hot Model),词袋模型(Bag of Words Model)、词频-逆文档频率(TF-IDF)、N元模型(N-Gram)、单词-向量模型(Word2vec)、文档-向量模型(Doc2vec)

    >>More

    #LLM #VEC
  • 2024-06-18

    什么是LangChain

    LangChain: 一个让你的LLM变得更强大的开源框架。LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。下面我们从新兴的大语言模型(LLM)技术栈的角度来看看为何它的理念这么受欢迎。

    LangChain起源

    LangChain 的作者是 Harrison Chase,最初是于 2022 年 10 月开源的一个项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。2017 年 Harrison Chase 还在哈佛上大学,如今已是硅谷的一家热门初创公司的 CEO,这对他来说是一次重大而迅速的跃迁。Insider 独家报道,人工智能初创公司 LangChain 在种子轮一周后,再次获得红杉领投的 2000 万至 2500 万美元融资,估值达到 2 亿美元。

    LangChain六大主要领域

    • 管理和优化prompt。不同的任务使用不同prompt,如何去管理和优化这些prompt是langchain的主要功能之一。
    • 链,初步理解为一个具体任务中不同子任务之间的一个调用。
    • 数据增强的生成,数据增强生成涉及特定类型的链,它首先与外部数据源交互以获取数据用于生成步骤。这方面的例子包括对长篇文字的总结和对特定数据源的提问/回答。
    • 代理,根据不同的指令采取不同的行动,直到整个流程完成为止。
    • 评估,生成式模型是出了名的难以用传统的指标来评估。评估它们的一个新方法是使用语言模型本身来进行评估。LangChain提供了一些提示/链来协助这个工作。
    • 内存:在整个流程中帮我们管理一些中间状态。

    总的来说LangChain可以理解为:在一个流程的整个生命周期中,管理和优化prompt,根据prompt使用不同的代理进行不同的动作,在这期间使用内存管理中间的一些状态,然后使用链将不同代理之间进行连接起来,最终形成一个闭环。

    LangChain的主要价值组件

    组件:用于处理语言模型的抽象概念,以及每个抽象概念的实现集合。无论你是否使用LangChain框架的其他部分,组件都是模块化的,易于使用。

    现成的链:用于完成特定高级任务的组件的结构化组合。现成的链使人容易上手。对于更复杂的应用和细微的用例,组件使得定制现有链或建立新链变得容易。

    LangChain组件

    • model I/O:语言模型接口
    • data connection:与特定任务的数据接口
    • chains:构建调用序列
    • agents:给定高级指令,让链选择使用哪些工具
    • memory:在一个链的运行之间保持应用状态
    • callbacks:记录并流式传输任何链的中间步骤
    • indexes:索引指的是结构化文件的方法,以便LLM能够与它们进行最好的交互

    >>More

    #LLM #AI
  • 2018-05-25

    服务器出现大量这种日志使得 /var/ 目录占用磁盘空间巨大:

    # tail -f /var/log/auth.log
    May 25 14:40:01 1204developer CRON[2191]: pam_unix(cron:session): session opened for user www-data by (uid=0)
    May 25 14:40:01 1204developer CRON[2193]: pam_unix(cron:session): session opened for user www-data by (uid=0)
    May 25 14:40:01 1204developer CRON[2192]: pam_unix(cron:session): session opened for user www-data by (uid=0)
    May 25 14:40:01 1204developer CRON[2192]: pam_unix(cron:session): session closed for user www-data
    May 25 14:40:01 1204developer CRON[2190]: pam_unix(cron:session): session closed for user www-data
    May 25 14:40:01 1204developer CRON[2191]: pam_unix(cron:session): session closed for user www-data
    May 25 14:41:01 1204developer CRON[2189]: pam_unix(cron:session): session closed for user smmsp
    May 25 14:41:01 1204developer CRON[12928]: pam_unix(cron:session): session opened for user www-data by (uid=0)
    May 25 14:41:02 1204developer CRON[12928]: pam_unix(cron:session): session closed for user www-data
    May 25 14:41:09 1204developer CRON[2193]: pam_unix(cron:session): session closed for user www-data
    

    >>More

    #Linux #Cron
  • 2017-07-17

    在PHP 中引用的意思是:不同的名字访问同一个变量内容。php的引用(就是在变量或者函数、对象等前面加上&符号)最重要就是删除引用的变量,只是引用的变量访问不了,但是内容并没有销毁。

    >>More

    #php
  • 2017-07-17

    PHP类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术。

    如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是public权限的,那么这种特殊的抽象类就叫接口

    接口使用关键字interface来定义,并使用关键字implements来实现接口中的方法,且必须完全实现。

    >>More

    #php
  • 2017-07-17

    匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。

    匿名函数目前是通过Closure类来实现的。

    闭包函数也可以作为变量的值来使用。PHP 会自动把此种表达式转换成内置类Closure的对象实例。把一个closure对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号。

    闭包可以从父作用域中继承变量。 任何此类变量都应该用use语言结构传递进去。 PHP 7.1起,不能传入此类变量:superglobals$this 或者和参数重名。 这些变量都必须在函数或类的头部声明。 从父作用域中继承变量与使用全局变量是不同的。全局变量存在于一个全局的范围,无论当前在执行的是哪个函数。而 闭包的父作用域是定义该闭包的函数(不一定是调用它的函数)。

    >>More

    #php
  • 2017-06-23

    Symfony2在使用Composer安装phpunit的时候遇到下面的错误:

    [Symfony\Component\Process\Exception\ProcessTimedOutException]                                                                                                                                                                                                             
    The process "git clone --no-checkout 'https://github.com/sebastianbergmann/phpunit.git' '/home/cxl/tp5-project/vendor/phpunit/phpunit' && cd '/home/cxl/tp5-project/vendor/phpunit/phpunit' && git remote add composer 'https://github.com/sebastianbergmann/phpunit.git'  
    && git fetch composer" exceeded the timeout of 300 seconds. 
    

    解决方案:增加COMPOSER_PROCESS_TIMEOUT,执行命令如下:

    //查看默认超时时间
    composer config --list
    //设置超时时间
    composer config -g process-timeout 600
    //清除缓存
    composer clear-cache
    
    #Composer
  • 2017-06-13

    在您的系统上,如果您已安装了多个版本的PHP(例如PHP 7.1和PHP 5.6两者)。 PHP 7.1作为Apache和CLI的默认PHP运行。对于任何需求,您需要使用PHP 5.6。然后你不需要删除php 7.1。你可以简单地切换php版本为默认用于Apache和命令行。

    例如,您的服务器安装了PHP 7.1和PHP 5.6两个版本。现在下面的例子将帮助你在两个版本之间切换。

    >>More

    #PHP #Ubuntu