让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

  最近一直有一个问题,如鲠在喉。争取早一天解决,早一天踏踏实实的睡觉。

  问题是:在ES中,一条JSON数据是如何写入到磁盘上的?

  如何解决这个问题?我想到了chatGPT,还有lucene的学习资料。这篇文章,我打算用 QA的形式来分享这次学习探索过程,看看能否驯服chatGPT当我的老师。

  文章我copy了我和chatGPT的聊天记录。

  最后的结果还是挺不错的,虽然也有一些问题,但是大多数是对的。并且chatGPT也给列出来了ES中这部分源码的实现位置,只需要再花时间看看源码,答案就有了。

Q1.1 在ES中,一条JSON数据是如何写入到磁盘上的,请结合lucene底层来讲讲

 其中引用起来的就是chatGPT告诉我的答案。chatGPT是一个很厉害的科学家,同时又很擅长说谎话。所以和chatGPT交流学习,最大的困难点,就是识别他说的谎话。

在Elasticsearch中,一条JSON数据是被索引到Lucene底层中的,Lucene底层是Elasticsearch用来存储和检索文档的核心引擎。

当一条JSON数据被索引到Elasticsearch中时,它首先会被转换为一个Lucene文档(Document)。Lucene文档是一个由多个字段组成的数据结构,每个字段都包含一个名称和一个值。在Elasticsearch中,每个JSON对象的属性都被映射为一个Lucene字段,其值则被存储在相应的字段中。

一旦JSON数据被转换为Lucene文档,它就可以被写入到磁盘上的Lucene索引文件中。Lucene索引文件是一个由多个段(Segment)组成的数据结构,每个段包含一部分文档和相关的元数据信息。当文档被写入到索引文件时,它会被分配到一个或多个段中,这些段可以是新建的,也可以是已存在的。

在Elasticsearch中,写入到磁盘上的数据是由分片(Shard)组成的。每个分片都是一个独立的Lucene索引,它可以存储一部分文档数据和元数据信息。当一条JSON数据被写入到Elasticsearch中时,它会被分配到一个或多个分片中,这些分片可以分布在不同的节点上,从而实现数据的分布式存储和检索。

总的来说,在Elasticsearch中,一条JSON数据是被转换为一个Lucene文档,并写入到分片的Lucene索引文件中的。这个过程涉及到很多细节和优化,Elasticsearch会尽可能地利用Lucene底层的特性来提高性能和可扩展性。

 第一个问题,看起来没有什么问题,因为只是笼统的回答一下。但是不是很详细,chatGPT也说了,涉及到了很多的细节和优化。那就接着继续问问。

 Q1.2这个过程涉及到哪些细节和什么优化

将一条JSON数据写入到磁盘上的Lucene索引文件中,涉及到很多细节和优化,其中一些关键点包括:

  1. 映射:将JSON数据映射到Lucene文档中,这包括对每个属性进行分词、索引和存储的处理。Elasticsearch会根据字段的类型和映射设置,自动进行数据转换和处理,以便正确地存储和检索数据。

  2. 索引:将Lucene文档写入到分片的索引文件中。这包括对文档进行分析、建立倒排索引、写入磁盘等一系列操作。Elasticsearch会利用Lucene底层的优化机制,如内存缓存、合并段、索引压缩等,以提高写入性能和减少磁盘空间占用。

  3. 分片:将索引数据分配到多个分片中,以实现数据的分布式存储和检索。Elasticsearch会根据集群配置和数据负载,自动进行分片和副本的分配和调整,以实现数据的高可用性和性能优化。

  4. 事务:将数据写入到索引文件时,需要保证数据的一致性和可靠性。Elasticsearch会利用Lucene底层的事务机制,如基于文件锁的事务管理和崩溃恢复机制,以确保数据写入的原子性和可靠性。

  5. 缓存:为了提高查询性能和减少磁盘I/O,Elasticsearch会利用Lucene底层的缓存机制,如过滤器缓存、字段数据缓存、近实时搜索等,以减少重复计算和磁盘访问。

总的来说,Elasticsearch通过利用Lucene底层的优化机制和特性,以及自身的分布式架构和算法,实现了高性能、可扩展和可靠的数据存储和检索。同时,Elasticsearch还提供了丰富的API和工具,方便用户进行数据操作和管理。

  这里的回答,看起来也都还行。 但还是不是我想要的答案。接下来我想问问他源码。

Q1.3还是不够详细,请结合源码跟我讲讲

Elasticsearch的源码实现涉及到多个模块和组件,其中核心部分是基于Lucene底层实现的。在这里,我会结合源码解析一下Elasticsearch将一条JSON数据写入到磁盘上的过程。

  • 映射:在Elasticsearch中,将JSON数据映射为Lucene文档是通过Mapping和Analyzer两个组件实现的。Mapping定义了字段的数据类型、分析器、存储方式等属性,Analyzer则负责对文本进行分词、过滤、归一化等处理。

在源码中,Mapping的定义是通过IndicesModule组件实现的,而Analyzer则是通过AnalysisModule和Analysis类实现的。当一条JSON数据被索引时,Elasticsearch会根据Mapping和Analyzer的定义,将数据转换为一个Lucene文档。

  • 索引:将Lucene文档写入到分片的索引文件中,是通过IndexWriter和IndexShard类实现的。IndexWriter是Lucene底层的核心组件,它负责对文档进行分析、建立倒排索引、写入磁盘等操作。

在Elasticsearch中,每个分片都有一个对应的IndexShard对象,它封装了Lucene的IndexWriter和IndexReader组件,以及相关的元数据信息。当一条JSON数据被写入到Elasticsearch时,它会被分配到一个或多个分片中,然后通过IndexShard的Index方法将文档写入到索引文件中。

  • 分片:将索引数据分配到多个分片中,是通过ClusterService和ShardRouting类实现的。ClusterService是Elasticsearch的集群管理组件,它负责管理集群的状态和拓扑结构,以及处理分片的分配和调度。

当一条JSON数据被写入到Elasticsearch时,它首先会被发送到一个主节点上进行处理,然后根据集群配置和数据负载,ClusterService会计算出将数据分配到哪些分片中。这个过程涉及到一些复杂的算法和策略,如哈希分片、一致性哈希、负载均衡等。

  • 事务:将数据写入到索引文件时,需要保证数据的一致性和可靠性。在Lucene底层,这个问题是通过两个机制来解决的:事务日志(Transaction Log)和段合并(Segment Merge)。

在Elasticsearch中,Transaction Log是通过Translog类实现的,它负责记录文档的变化操作,以便在崩溃或重启时进行恢复。Segment Merge则是通过IndexWriter和IndexReader组件实现的,它负责将多个小段合并成一个大段,以减少磁盘空间占用和提高查询性能。

  • 刷新和提交:将数据写入到索引文件后,需要将数据刷新到内存缓存和磁盘上。在Elasticsearch中,这个过程是通过IndexWriter和IndexShard类的flush方法实现的。

IndexWriter的flush方法会将内存缓存中的数据写入到磁盘上,并生成一个新的段(Segment),同时将事务日志清空。IndexShard的flush方法会将IndexWriter的缓存和元数据信息同步到内存中,并更新分片的状态信息。

当一批数据被写入到Elasticsearch后,它们并不会立即生效,直到进行了提交(Commit)操作。在Elasticsearch中,提交是通过IndexWriter的commit方法实现的,它会将所有未提交的数据刷新到磁盘上,并更新分片的元数据信息。

  • 性能优化:在将数据写入到Elasticsearch时,有一些性能优化技巧可以提高写入速度和可靠性。其中一些技巧包括:
    1. 批量写入:将多条数据合并成一个批次,一次性写入到Elasticsearch中,可以减少网络开销和提高写入性能。
    2. 索引分片:将索引数据分配到多个分片中,可以提高并发写入能力和水平扩展性。
    3. 内存管理:合理地管理内存缓存和JVM堆内存,可以避免OOM和GC问题,提高写入性能和稳定性。
    4. 硬件优化:选择高性能的硬件设备和存储介质,可以提高磁盘IO速度和可靠性。

总体来说,将一条JSON数据写入到Elasticsearch中,涉及到多个组件和技术细节,包括数据映射、索引写入、分片管理、事务处理、数据刷新和性能优化等方面。理解这些细节和技术原理,可以帮助我们更好地理解和使用Elasticsearch,并在实际应用中提高性能和可靠性。

   回答行云流水,不管对不对,先炸一下它。

Q1.4 你不能骗我,你要根据es官网和lucene官网回答我,最好还能结合源码!

  这次回答要比上边更好一点了。这里chatGPT不仅讲了在es中的操作步骤,而且还讲了一下在lucene中的过程。这一次的答案已经趋向于我想要的答案了。

非常抱歉,我的回答并不够详细和准确。以下是根据Elasticsearch和Lucene官方文档以及源码的详细解释。

在Elasticsearch中,一条JSON数据写入到磁盘的过程可以分为以下几个步骤:

  1. 数据映射:将JSON数据转换成Lucene文档(Document),并根据索引的映射规则(Mapping)将文档字段映射到Lucene字段(Field)中。这个过程是由IndexRequest类和IndexService类实现的。

  2. 索引写入:将文档写入到分片(Shard)的内存缓存中,同时将操作记录到事务日志(Translog)中。这个过程是由IndexShard类和Translog类实现的。

  3. 文档合并:将多个内存缓存中的文档合并成一个文档列表,并对文档列表进行排序和去重。这个过程是由InMemoryMerger类实现的。

  4. 索引合并:将合并后的文档列表写入到磁盘上的索引文件(Index File)中,并更新分片的元数据信息。这个过程是由IndexWriter类和Segment类实现的。

  5. 刷新和提交:将数据写入到索引文件后,需要将数据刷新到内存缓存和磁盘上。在Elasticsearch中,这个过程是通过IndexWriter和IndexShard类的flush方法实现的。当一批数据被写入到Elasticsearch后,它们并不会立即生效,直到进行了提交(Commit)操作。在Elasticsearch中,提交是通过IndexWriter的commit方法实现的,它会将所有未提交的数据刷新到磁盘上,并更新分片的元数据信息。

在Lucene底层实现上,索引写入的过程包括以下步骤:

  1. 文档分析:将文档内容进行分析和处理,生成一组词汇单元(Term)。

  2. 倒排索引写入:将文档的词汇单元写入到倒排索引(Inverted Index)中。倒排索引是一个数据结构,用于记录每个词汇单元出现在哪些文档中,并存储一些额外的统计信息(如出现次数、位置等)。

  3. 磁盘写入:将倒排索引写入到磁盘上的索引文件中。索引文件是一个二进制文件,用于持久化存储倒排索引和其他元数据信息。

  4. 内存管理:对内存缓存中的倒排索引进行管理,包括内存回收、内存合并和内存清理等操作。

  5. 索引合并:将多个磁盘索引文件合并成一个新的索引文件,并进行一些优化操作,如合并多个倒排索引、去重、压缩等。这个过程是由IndexWriter类的merge方法和MergePolicy类实现的。

  6. 索引优化:对索引文件进行优化,如减少文件数量、优化查询性能、减少索引大小等。这个过程是由IndexWriter类的optimize方法和MergePolicy类实现的。

  7. 在Lucene中,还有一些与索引写入相关的细节和优化,如:

    1. 内存缓存管理:Lucene会将一部分倒排索引存储在内存中,以加快索引写入和查询速度。但是,内存缓存的大小是有限制的,一旦缓存满了,就需要将其中的索引数据写入到磁盘上。

    2. 总之,索引写入是Elasticsearch和Lucene的核心功能之一,它涉及到多个组件和细节,包括数据映射、索引写入、索引合并、内存管理、磁盘写入优化等。通过对这些细节和优化进行深入理解,可以帮助我们更好地使用和优化Elasticsearch和Lucene。

    3. 磁盘写入优化:Lucene使用一些技术来优化磁盘写入性能,如缓存写入数据、使用多线程写入等。

    4. 索引压缩:Lucene会对索引文件进行压缩,以减少索引文件的大小,从而提高查询性能。索引压缩是在索引合并和优化过程中完成的。

    5. 数据结构优化:Lucene使用一些高效的数据结构来存储倒排索引和其他元数据信息,如FST、DFA、IntBlockPool等。这些数据结构可以显著提高索引写入和查询的性能。

Q1.5  请再帮我精确地找到源码的位置 es使用7.11.1版本最好

amazing!到这里,我觉得惊呆了,以前看源码的时候,可没有这么轻松。需要看好久才能捋出来这么一个列表。大概根据chatGPT给列出来的源码位置,点开看了看 ,还可以(还没有都点开验证)。 但是其中第四条 chatGPT说 “FielddataIndexFieldData类实现了倒排索引的存储和查询功能” 这个肯定是不对的。这部分肯定是lucene实现的。

  1. 数据映射:数据映射的相关代码位于 org.elasticsearch.index.mapper 包下。

  2. 索引写入:索引写入的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类位于 org.elasticsearch.index.engine.Engine 文件中。

  3. 倒排索引:倒排索引的相关代码位于 org.elasticsearch.index.fielddata 包下。其中,FielddataIndexFieldData类实现了倒排索引的存储和查询功能,位于 org.elasticsearch.index.fielddata.IndexFieldData.java 文件中。

  4. 索引合并:索引合并的相关代码位于 org.elasticsearch.index.merge 包下。其中,IndexWriter类的merge方法位于 org.elasticsearch.index.engine.Engine 文件中。

  5. 索引优化:索引优化的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类的optimize方法位于 org.elasticsearch.index.engine.Engine 文件中。

其他与索引写入相关的细节和优化的代码位于不同的包和类中,具体位置如下:

  1. 内存缓存管理:内存缓存管理的相关代码位于 org.elasticsearch.index.shard 包下。其中,IndexShard类负责管理内存缓存,位于 org.elasticsearch.index.shard.IndexShard 文件中。

  2. 磁盘写入优化:磁盘写入优化的相关代码位于 org.elasticsearch.index.translog 包下。其中,Translog类实现了磁盘写入的缓存和优化功能,位于 org.elasticsearch.index.translog.Translog.java 文件中。

  3. 索引压缩:索引压缩的相关代码位于 org.elasticsearch.index.codec 包下。其中,Lucene索引压缩的实现位于 org.elasticsearch.index.codec.CodecService 类中,而Elasticsearch自身的索引压缩实现位于 org.elasticsearch.index.codec.PostingsFormat 类中。

  4. 数据结构优化:Lucene使用的高效数据结构的相关代码位于 org.apache.lucene.util 包下,其中FST的实现位于 org.apache.lucene.util.fst 包下,DFA的实现位于 org.apache.lucene.util.automaton 包下,IntBlockPool的实现位于 org.apache.lucene.util.packed 包下。Elasticsearch自身使用的高效数据结构的相关代码位于 org.elasticsearch.common.util 包下。

  5. 索引刷新:索引刷新的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类的flush方法位于 org.elasticsearch.index.engine.Engine 文件中。

  6. 索引删除:索引删除的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类的delete方法和deleteByQuery方法位于 org.elasticsearch.index.engine.Engine 文件中。

  7. 索引恢复:索引恢复的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类的recovery方法位于 org.elasticsearch.index.engine.Engine 文件中。

  8. 索引分片:索引分片的相关代码位于 org.elasticsearch.index.shard 包下。其中,IndexShard类负责管理和操作索引分片,位于 org.elasticsearch.index.shard.IndexShard 文件中。

  9. 数据写入确认:数据写入确认的相关代码位于 org.elasticsearch.index.translog 包下。其中,Translog类实现了数据写入确认的功能,位于 org.elasticsearch.index.translog.Translog.java 文件中。

  10. 索引同步:索引同步的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类的sync方法位于 org.elasticsearch.index.engine.Engine 文件中。

  11. 索引缓存:索引缓存的相关代码位于 org.elasticsearch.index.cache 包下。其中,IndexCache类负责管理和操作索引缓存,位于 org.elasticsearch.index.cache.IndexCache.java 文件中。

  12. 索引快照:索引快照的相关代码位于 org.elasticsearch.index.snapshots 包下。其中,IndexShardSnapshot类实现了索引快照的存储和恢复功能,位于 org.elasticsearch.index.snapshots.IndexShardSnapshot.java 文件中。

  13. 索引复制:索引复制的相关代码位于 org.elasticsearch.index.shard 包下。其中,IndexShard类实现了索引复制的功能,位于 org.elasticsearch.index.shard.IndexShard.java 文件中。

  14. 索引压缩:索引压缩的相关代码位于 org.elasticsearch.index.codec 包下。其中,PostingsFormat类和DocValuesFormat类负责控制索引压缩的方式和格式,位于 org.elasticsearch.index.codec 文件夹中。

  15. 索引合并:索引合并的相关代码位于 org.elasticsearch.index.merge 包下。其中,MergePolicy类和MergeScheduler类负责控制索引合并的策略和调度,位于 org.elasticsearch.index.merge 文件夹中。

  16. 索引优化:索引优化的相关代码位于 org.elasticsearch.index.engine 包下。其中,IndexWriter类的forceMerge方法位于 org.elasticsearch.index.engine.Engine 文件中。

  17. 索引自动切分:索引自动切分的相关代码位于 org.elasticsearch.index 包下。其中,IndexService类负责控制索引的自动切分,位于 org.elasticsearch.index.IndexService 文件中。

  18. 索引查询:索引查询的相关代码位于 org.elasticsearch.index.query 包下。其中,Query类和QueryBuilder类负责控制索引查询的方式和格式,位于 org.elasticsearch.index.query 文件夹中。

  19. 索引统计:索引统计的相关代码位于 org.elasticsearch.index.fielddata 包下。其中,FieldDataType类和FieldDataStats类负责控制索引统计的方式和格式,位于 org.elasticsearch.index.fielddata 文件夹中。

  20. 索引分析:索引分析的相关代码位于 org.elasticsearch.index.analysis 包下。其中,Analyzer类和TokenFilter类负责控制索引分析的方式和格式,位于 org.elasticsearch.index.analysis 文件夹中。

  接下来再用一个问题来验证。

Q 1.6  我有个疑问,你确定 FielddataIndexFieldData类实现了倒排索引的存储和查询功能吗

非常抱歉,我在之前的回答中有误,FielddataIndexFieldData 类并没有实现倒排索引的存储和查询功能。

FielddataIndexFieldData 类是 Elasticsearch 中用于在内存中存储分段的字段数据的一个数据结构,通常用于聚合、排序和脚本等功能的计算。它不是存储实际的倒排索引,而是对已经建立好的倒排索引数据进行了提取和封装,方便后续的处理和计算。

实际上,倒排索引是在建立索引时创建的,主要由 Lucene 库实现,而不是 Elasticsearch 本身。Elasticsearch 的索引底层是基于 Lucene 的,它使用了 Lucene 的倒排索引机制来存储和查询数据。Lucene 的倒排索引主要包括 Term、Document 和 Field 等概念,可以通过 IndexReader、IndexWriter、TermQuery、BooleanQuery 等 Lucene 类进行索引的存储和查询操作。

因此,如果您需要深入了解 Elasticsearch 中倒排索引的实现和细节,建议参考 Lucene 相关的文档和资料。

Q1.7 那你检查一下上边说的源码的位置,还有没有错的了

 于是chatGPT又列出和倒排索引相关的源码了。

非常抱歉之前的回答中有误,FielddataIndexFieldData 类并没有实现倒排索引的存储和查询功能。

以下是 Elasticsearch 7.11.1 版本中倒排索引存储和查询的相关源代码位置:

  • 倒排索引存储

在 Elasticsearch 中,倒排索引是在建立索引时创建的,主要由 Lucene 库实现。在 Elasticsearch 的源代码中,建立索引的主要逻辑位于 org.elasticsearch.index.IndexService 类中,具体实现可以参考 org.elasticsearch.index.engine.InternalEngine 类的 IndexWriter 内部类。倒排索引数据存储在磁盘上,位于索引目录下的 segments_N 文件中,其中 N 表示索引分段编号。

  • 倒排索引查询

在 Elasticsearch 中,查询请求通过各种查询语句和过滤器进行构建,这些查询语句和过滤器最终会转换为 Lucene 的 Query 和 Filter 对象,然后通过 org.elasticsearch.index.search.SearchService 类的 search 方法进行查询。在 SearchService 类中,使用 Lucene 的 IndexSearcher 对象对索引进行搜索,具体实现可以参考 org.elasticsearch.index.search.DefaultSearchContext 类和 org.elasticsearch.search.SearchHit 类。

对于搜索结果的排序和分页,Elasticsearch 使用了 Lucene 的 ScoreDoc 和 TopDocs 对象,这些对象包含了查询结果的相关性分数和文档 ID 等信息。在 Elasticsearch 的源代码中,相关性分数的计算和排序逻辑可以参考 org.elasticsearch.search.SearchHits 类的 sortgetAt 方法。分页逻辑可以参考 org.elasticsearch.search.SearchHit 类的 shardid 字段。

在 Elasticsearch 中,查询请求可以分为两种类型:分片查询和全局查询。分片查询是指查询请求只在单个分片上进行查询,并返回查询结果,全局查询是指查询请求在所有分片上进行查询,并返回聚合的查询结果。

对于分片查询,每个分片会使用 Lucene 的 IndexSearcher 对象进行查询,并返回查询结果。在 Elasticsearch 的源代码中,具体实现可以参考 org.elasticsearch.search.query.QueryPhase 类和 org.elasticsearch.search.fetch.subphase.DocIdSearchFetchSubPhase 类。QueryPhase 类是分片查询的主要逻辑实现类,它使用 Lucene 的 QueryParser 和 QueryRewriteChain 等对象对查询语句进行解析和重写,然后使用 Lucene 的 IndexSearcher 对象对分片上的索引进行查询。DocIdSearchFetchSubPhase 类则是对查询结果进行文档 ID 提取和转换的实现类。

对于全局查询,Elasticsearch 会将查询请求发送到所有的分片上,并在所有分片上进行查询。查询结果会通过 org.elasticsearch.action.search.SearchPhaseController 类进行合并和排序,并返回给客户端。具体实现可以参考 org.elasticsearch.action.search.TransportSearchAction 类和 org.elasticsearch.search.fetch.subphase.HighlightPhase 类。TransportSearchAction 类是全局查询的主要逻辑实现类,它负责将查询请求发送到所有分片上,并通过 SearchPhaseController 类进行查询结果的合并和排序。HighlightPhase 类则是对查询结果进行高亮处理的实现类。

总之,倒排索引是 Elasticsearch 和 Lucene 中非常重要的数据结构,它可以大大提高搜索性能和查询效率。在 Elasticsearch 中,倒排索引的存储和查询主要依赖于 Lucene 库的实现,同时也涉及到大量的优化和改进,以满足不同的查询需求和性能要求。

最后chatGPT说,让我去看看源码。并可以参与开发和贡献代码。 不得不说,还是chatGPT懂我。

如果您想了解更多关于 Elasticsearch 的源码位置和细节,请参考以下官方文档和 GitHub 仓库:

  1. Elasticsearch 官方文档:Elasticsearch Guide [8.7] | Elastic

  2. Elasticsearch GitHub 仓库:GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine

在官方文档中,您可以找到详细的 Elasticsearch 使用文档和参考手册,以及各个版本的发行说明和更新日志。

在 GitHub 仓库中,您可以找到 Elasticsearch 的完整源代码,并可以参与开发和贡献代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8872.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-chatgpt自动化批量改写文章-基于gpt-3-5-turbo模型

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 一、ChatGPT官方文档介绍: ChatGPT API—0.002美元,1000个token。比之前的GPT-3.0,成本直接降低了9…

或许你不信,但是强于ChatGPT的模型已经出来了。。。

每天给你送来NLP技术干货! 来自:量子位 点击这里进群—>加入NLP交流群 因不满老东家成为微软附庸,11名OpenAI前员工怒而出走。 如今带着“ChatGPT最强竞品”杀回战场,新公司估值50亿美元,一出手就获得3亿美元融资。…

OpenAI网站3月份独立访问量突破8.47亿,增长54%;10分钟搭建自己可免费商用的ChatGPT环境

🦉 AI新闻 🚀 OpenAI网站3月份独立访问量突破8.47亿,增长54% 摘要:据营销机构VezaDigital的调查数据显示,今年3月份共有8.47亿用户访问了OpenAI的网站,比2月份增长了54%。OpenAI是爆火聊天机器人ChatGPT的…

ChatGPT详解:发展历史、原理、技术架构及产业未来探讨

去年12月1日,OpenAI推出人工智能聊天原型ChatGPT,再次赚足眼球,为AI界引发了类似AIGC让艺术家失业的大讨论。据报道,ChatGPT在开放试用的短短几天,就吸引了超过 100 万互联网注册用户。并且社交网络流传出各种询问或调…

腾讯回应考生喊话马化腾;库克承认在使用 ChatGPT;OpenHarmony 4.0 Beta1 发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

腾讯回应考生喊话马化腾;库克承认在使用 ChatGPT;OpenHarmony 4.0 Beta1 发布 | 极客头条

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&…

大语言模型汇总(ChatGPT、盘古、通义、文心一言、混元)

首先就是OpenAI所提出的GPT相关模型,也是目前最火的大语言模型,发布版本已经到了4.0 1.ChatGPT 官网:https://chat.openai.com/chat 如下图是自然语言功能的使用示例 2.华为的盘古模型 盘古模型是华为开发的一系列大规模自回归中文预训练语言…

华为参战!国产之光盘古大模型推:盘古Chat

盘古Chat是华为基于盘古大模型开发的一款多模态千亿级大模型产品,可以支持多种自然语言理解和生成的任务,如文本生成、问答、翻译、对话等。它是直接对标目前比较火爆的ChatGPT的产品,被认为是新一代的国产“AI”王炸。 盘古Chat预计将于今…

华为云发布代码检查服务;微软向其美国雇员提供“无限制”休假时间;付费版 ChatGPT|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

大模型多模态Chatgpt+自动驾驶控制器设计方案

/导读/ 最近的科技圈,大家都被微软推出的ChatGPT刷屏,作为工智能公司OpenAI于2022年11月推出的聊天机器人,其能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,甚至能完成撰写邮件、视频脚本、文…

ChatGPT三问:是什么、从哪来、去往哪?

©PaperWeekly 原创 作者 | 张燚钧 单位 | 中国移动云能力中心 研究方向 | 预训练大模型 ChatGPT 热潮已经持续月余,目前热度依然不减。根据最新的消息,ChatGPT 的升级版 GPT-4 也已蓄势待发。回首 ChatGPT 的这波热潮,ChatGPT 是什么&a…

基于单机最高能效270亿参数GPT模型的文本生成与理解

作者:李鹏,王玮,陈嘉乐,黄松芳,黄俊 单位:阿里云智能机器学习平台PAI & 达摩院自然语言基础技术 概述 GPT模型能较好的处理文本生成领域的各种任务,比如文本补全,自由问答&am…

ChatGPT的因果关系基础:数据科学的实践与发展!

数据会说谎?如何正确的挖掘并使用数据? 前沿的科学实验如何做? 实验又是如何欺骗你的? ChatGPT等AIGC技术如何与因果学习双向赋能? 数据中台如何发挥功效? 用户增长有捷径吗? 数据科学的最佳实践…

最新ChatGPT商用网站源码+支持ai绘画+GPT4.0+GPT3.5+Prompt角色+实时语音识别输入+后台一键版本更新!

程序已支持ChatGPT4.0、Midjourney绘画、GPT3.5 API绘画、新增绘画广场功能、Prompt面具角色扮演功能,后台自定义添加,用户也可自定义添加实时语音识别输入、用户会员套餐、用户每日签到功能、后台管理、一键更新版本。支持手机电脑不同布局页面自适应。…

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问:程序已经支持GPT3.5、GPT4.0接口…

Mantis系列:MantisBT 注册新用户时设置密码

修改\xampp\htdocs\mantis\config_defaults_inc.php配置文件 找到 $g_send_reset_password 修改前:$g_send_reset_password ON; 修改后: $g_send_reset_password OFF;

使用Foxmail 登录qq邮箱使用第三发授权码登录失败

上午通过 mac 来登录qq邮箱本来很简单的,账户授权码就可以了,但是总是登录不上去,这里来总结一下 客户端Foxmail 这里填写一个授权码就可以了,剧情的授权码到自己的qq邮箱 中获取: QQ邮箱->设置->账户-> 前…

常见邮件发送失败原因分析以及解决方法

本文来自:http://www.maikongjian.com/style/info/shownews2.asp?id439 一.发到 sina.com 的邮件会被退回 我发到 sina 的邮件会被退回,并提示"remote server said: 553 Spam Mail http://mail.sina.com.cn/FAQ.html";错误,怎么…

TP6验证码的使用和验证失败的原因以及解决办法

首先使用Composer安装think-captcha扩展包&#xff1a; composer require topthink/think-captcha项目根目录下 在模版内添加验证码的显示代码 <div>{:captcha_img()}</div>或者 <div><img src"{:captcha_src()}" alt"captcha" /&…

java程序通过腾讯邮箱发送邮件失败:javax.mail.AuthenticationFailedException: 535 Error: authentication failed, syste

1.问题描述 通过java程序实现邮箱发送验证码的功能使用一段时间后出现发送邮件失败的问题排查后提示&#xff1a;javax.mail.AuthenticationFailedException: 535 Error: authentication failed, syste完整日志 DEBUG: setDebug: JavaMail version 1.4.7 DEBUG: getProvider(…