Open caibimiaokong opened 1 year ago
部分文本是怎么操作的??
核心代码:
window.gptInputString = Zotero.ZoteroGPT.views.inputContainer.querySelector("input").value
Zotero.ZoteroGPT.views.messages = [];
Zotero.ZoteroGPT.utils.getRelatedText(
window.gptInputString
)
GPT解释:
这段代码的作用是获取页面中某个输入框的值,并把该值作为参数传递给 Zotero.ZoteroGPT.utils.getRelatedText()
方法,用于获取与该输入值相关的文本。同时,该段代码也将 Zotero.ZoteroGPT.views.messages
数组清空,可能是为了避免对之前的消息产生影响。
具体获取全文的多少内容,获取哪一部分内容不太清楚,确定的是肯定不是全文。
比如你的pdf全文是:
我今天吃了白菜。
我今天喝了白开水。
我今天看了一本书。
当你提问:今天干了什么?
getRelatedText("今天干了什么")
会返回上面三件事。
当你问:今天喝了什么?
getRelatedText("今天喝了什么?")
会返回 我今天喝了白开水。
。
然后这些与你提问高度相关的文字,对应pdf段落会输入给GPT,让他根据这些去回答你的问题。ChatPDF,chatDOC或者其它,都是这个原理。
说白了就是根据用户输入内容 ,去检索全文相关的内容,再把该部分内容作为全局信息送给GPT呗 如果用户输入的问题高度抽象,例如:本文方法的意义,getRelatedText()无法检索到形似的文字,这种情况怎么解决呢?
说白了就是根据用户输入内容 ,去检索全文相关的内容,再把该部分内容作为全局信息送给GPT呗 如果用户输入的问题高度抽象,例如:本文方法的意义,getRelatedText()无法检索到形似的文字,这种情况怎么解决呢?
这是openai做的工作。https://platform.openai.com/docs/api-reference/embeddings 我说的是方便理解的,实际搜索复杂的多。
说白了就是根据用户输入内容 ,去检索全文相关的内容,再把该部分内容作为全局信息送给GPT呗 如果用户输入的问题高度抽象,例如:本文方法的意义,getRelatedText()无法检索到形似的文字,这种情况怎么解决呢?
这是openai做的工作。https://platform.openai.com/docs/api-reference/embeddings 我说的是方便理解的,实际搜索复杂的多。
谢谢答复,我再研究下
请问embeddings是不是只在第一次AskPDF的时候会输入给openai? 后续的若干次提问之间是否有历史记忆, 还是说每次提问都是平行的、仅根据已经embeddings的内容来回答的?
请问embeddings是不是只在第一次AskPDF的时候会输入给openai? 后续的若干次提问之间是否有历史记忆, 还是说每次提问都是平行的、仅根据已经embeddings的内容来回答的?
第一次会把pdf所有段落返回的向量存储本地。以后读取。不会重复请求
感觉chatPDF的回答要好得多,zoteroGPT的回答总给我,太总揽全局的感觉,没办法专注到文章的一个小片段,并且回答的字数是被限制了吗?
感觉chatPDF的回答要好得多,zoteroGPT的回答总给我,太总揽全局的感觉,没办法专注到文章的一个小片段,并且回答的字数是被限制了吗?
有一个参考数量默认是5,gpt基于5个段落总结回答,你可以设置大点,输入gpt文本就会变多,就会变好
/relatedNumber 这个命令设置。当然消耗token会更多。
至于chatpdf和插件哪个更好。都是基于gpt,我认为没有可比性,好可能好在喂的段落更多,而这个在插件可以设置。
怎么在把zoteroGPT调试到比较好的状态?
怎么在把zoteroGPT调试到比较好的状态?
你指的askpdf吗
把/relatedNumber 设置成最大值的话,就会基于全文来回答吗?原来的默认设置5,每次问一下小问题,都会大半段话用来说整个文章的意义,感觉像是在基于全文回答(55555~)
是的
一方面你可以增大realtedNumber,另一方面,插件本身有解析pdf的任务。chatpdf类似服务有两个核心点一是相似段落搜索,搜索数量通过relatedNumber设置,二是把完整的段落准确解析出来,这是开发者要做的。
一个完美的chatpdf应用,需要精确的段落解析。排版不规范,解析出段落会差很多。后面的向量化,相似度搜索,都是一样的。差别只在pdf解析,你要在pdf排版规范的pdf上使用它。如果你觉得他回答太笼统,那就增大relatedNumber,另外你问的问题要尽可能详细,这有利于相似度搜索。
把/relatedNumber 设置成最大值的话,就会基于全文来回答吗?原来的默认设置5,每次问一下小问题,都会大半段话用来说整个文章的意义,感觉像是在基于全文回答(55555~)
5个足够了,字数不会太多。你问得问题如果太笼统,那么不利于相似度搜索,则需要增加relatedNumber
上面是chatpdf的回答,下面是askpdf的回答,严重超纲了,他总想着回答问题之外的东西,虚拟脑分析和工作记忆都是其他段落的问题了。
收到,感谢大佬指导,学到太多了!
上面是chatpdf的回答,下面是askpdf的回答,严重超纲了,他总想着回答问题之外的东西,虚拟脑分析和工作记忆都是其他段落的问题了。
pdf发一下,优化一下,因为这部分功能只是实现了,还没开始优化。chatpdf都收费了,服务肯定做的很好了。但是插件实现他的效果也不难。
说白了就是根据用户输入内容 ,去检索全文相关的内容,再把该部分内容作为全局信息送给GPT呗 如果用户输入的问题高度抽象,例如:本文方法的意义,getRelatedText()无法检索到形似的文字,这种情况怎么解决呢?
这是openai做的工作。https://platform.openai.com/docs/api-reference/embeddings 我说的是方便理解的,实际搜索复杂的多。
我对askPDF有个疑问,我在使用askPDF时只是提出了一个很简单的问题,它回复的也不长,那总共消耗的token数是不是还包含它“阅读PDF”时占用的token,如果是这样的话,那消耗token就太巨大了,随便一篇论文就是六七千字。
是不是还包含它“阅读PDF”时占用的token
不,会缓存
按照你的意思,就是说一篇论文第一次点击askPDF时,会“阅读”全篇PDF吗,并且PDF的字数也是统计在token中的吗?我有一次看一篇外文的毕业论文,400多页,,,点了下askpdf,问了个简单的问题,回答的也简单,,后来在openai.api官网里看了下,消耗了1.2美元,好心疼
如果我关闭这本书,下次再次打开是否需要重新ask整本书