最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

AI 如何助力 CASSANDRA 六周添加向量搜索功能

2023-09-20 11:06 作者:岱軍  | 我要投稿

DataStax 必須迅速行動,添加這個基礎的 AI 賦能功能。以下是 ChatGPT、Copilot 和其他 AI 工具如何幫助我們構建代碼的情況。

譯自 How AI Helped Us Add Vector Search to Cassandra in 6 Weeks 。

圖片

DataStax 面臨著巨大的需求,需要添加向量搜索功能來支持生成式 AI 應用程序。我們?yōu)?Cassandra 和基于 Cassandra 構建的托管服務 Astra DB 添加這一功能制定了一個非常雄心勃勃的目標。

早在 4 月份,當我問我們的產品負責人首席副總裁誰會去構建它時,他說:“為什么你不做呢?”

我和其他兩名工程師著手在 6 周內,也就是 6 月 7 日交付一個新的向量搜索實現(xiàn)。

在這個關鍵項目中嘗試過這些工具后,我確信這些工具確實極大地提高了生產力。事實上,我再也不會全部手寫代碼了。以下是我在使用 ChatGPT、GitHub Copilot 和其他 AI 工具進行編碼時獲得的經驗。

Copilot

Copilot 很簡單:它是增強的自動完成功能。大多數時候,它會為你完成一行,或者根據上下文模式匹配完成幾行。在這里,我寫了一個注釋,然后在新行上開始寫“neighbors”。Copilot提供完成其余部分,正確地補全了第二行“neighbors”后的文本。

圖片

這里有一個稍微復雜一點的測試代碼示例,我開始用 mapToLong 編寫循環(huán),然后改變了數據結構,以便使用 forEach 調用方法更清晰。Copilot 照顧了我:

圖片

有時(這更是例外而不是規(guī)則),它通過提供完成整個方法而讓我感到驚訝:

圖片


Copilot 有用,但由于兩個原因受到限制。首先,它經調優(yōu)以保守地(正確地)犯錯誤。它仍可能產生幻覺,但很少見;當它不知道做什么時,它不會提供完成選項。其次,它受限于需要快速地無縫集成到人類鍵入的短暫停頓中,這暫時排除了使用像 GPT-4 這樣的重量級模型。

(另見 Max Krieger 的此推文,了解“Copilot 極致主義者”的觀點。)

ChatGPT

你可以嘗試讓 Copilot 通過注釋生成代碼,但對于這種用例,你幾乎總是能從 GPT-4(通過付費的 ChatGPT 或 API 訪問)獲得更好的結果。

如果你還沒有嘗試過 GPT-4,你絕對應該嘗試。確實,它有時會產生幻覺,但遠少于 GPT-3.5 或 Claude。確實,有時它無法解決簡單的問題(這里我正在努力讓它理解簡單的二分查找)。但其他時候,它的表現(xiàn)令人震驚地好,就像這個時候,它在第一次嘗試中就找到了我的競爭條件。即使當它表現(xiàn)不佳時,擁有一個可以用貌似智能的方式響應的橡皮鴨調試伙伴也非常寶貴,可以保持思維狀態(tài),保持動力。

你可以用它做任何事情?;蛘咧辽偈悄隳苡梦淖置枋龅娜魏问虑?,在編程背景下,這幾乎涵蓋了一切。

以下是我使用 GPT-4 的一些地方:

  • 關于 API 的隨機問題,否則我不得不潛入源碼。這類問題最有可能產生幻覺,對于這種用例,我已經大部分切換到 Phind(見下文)。

  • 微優(yōu)化。這像 Copilot,但匹配全部 Stack Overflow 內容,因為那就是(部分)它的訓練數據。

  • 復雜的 Stream 流水線,因為我還不太善于把頭腦中的邏輯轉化為 Stream 方法調用的功能鏈。有時,像這個例子一樣,最終結果比我們開始的要差,但這在編程中經常發(fā)生。用 GPT 探索要比一步一步打字快得多,而且更容易。縮短結果周期可以提高嘗試新想法的可能性,因為實驗成本更低。

  • 當然,GPT 也知道 git,但你可能沒有意識到它在使用 git 構建自定義工具方面有多強大。與列表中的其他內容一樣,這是我以前可以手動完成的事情,但有了 GPT 加速意味著現(xiàn)在我會創(chuàng)建這樣的工具(以前,我通常會采用第二好的解決方案,而不是在一次性腳本上花一個小時)。

這里是與 GPT-4 的協(xié)作中最喜歡的部分。我需要編寫一個自定義類來避免?ConcurrentHashMap<Integer,Integer>?的盒裝/拆箱造成的垃圾回收開銷,而這是為 Lucene 編寫的,它有嚴格的無外部依賴項的政策,所以我不能簡單地使用像 fastutil-concurrent-wrapper 這樣的并發(fā)基元映射。

我與 GPT 反復多次交流,改進了它的解決方案。這段對話說明了我認為 2023 年年中使用 GPT 的幾個最佳實踐:

  1. 在編寫代碼時,GPT 在封裝良好的問題上表現(xiàn)最佳。相比之下,我在試圖讓它執(zhí)行涉及一個類多個部分的重構時大多不成功,即使是一個小類。

  2. 將建議提出為問題。“是否會更有效......?” GPT(甚至更多的是 Claude)不愿直接反駁用戶。留出空間讓它表示不同意見,否則可能會無意中強迫它開始產生幻覺。

  3. 不要試圖在大語言模型(LLM)中做每一件事。來自這次對話的最終輸出仍需一些調整,但已經足夠接近我想要的,手動完成會更簡單快速,而不是試圖讓 GPT 完全正確。

  4. 我通常不相信神奇的提示詞 —— 最好使用直接的提示,如果 GPT 朝錯誤方向發(fā)展,進行糾正——但在某些地方,正確的提示詞確實可以提供很大幫助。Java 中的并發(fā)編程就是這樣的地方之一。GPT 的首選解決方案是簡單地在所有內容上加上 synchronized 并結束。我發(fā)現(xiàn),告訴它按照并發(fā)大師 Cliff Click 的風格思考會有很大幫助。最近,我也切換到使用 Jeremy Howard 的系統(tǒng)提示的略加編輯的版本。

看這個列表,它非常符合使用 AI 就像有無限的實習生為你效勞的經驗法則。實習生在自包含的問題上表現(xiàn)最好,通常不愿與團隊負責人相矛盾,而你自己完成這項工作通常比解釋你想要的每一個細節(jié)以便實習生能做到要簡單得多。(盡管我建議抵制在真實實習生身上這樣做的誘惑,但對 GPT 不重要。)

高級數據分析

高級數據分析(Advanced Data Analysis,ADA),以前稱為代碼解釋器,也是 ChatGPT 的一部分,是另一個層次的,我希望它能在昨天就用于 Java。它將 GPT-4 Python 代碼生成封裝到類似 Jupyter 的沙盒中,并進行循環(huán)以糾正自己的錯誤。這里有一個例子,當我正在調查為什么我的索引代碼構建了一個分區(qū)圖時。

需要注意的主要問題是,當遇到意外輸入時,ADA 傾向于“解決”問題是拋棄冒犯的行,這通常不是你想要的。一旦代碼順利運行到完成,它通常對自己的努力感到滿意 - 你需要明確要求它包含的正常檢查。一旦你告訴它要查找什么,它就會將其添加到“迭代直到成功”循環(huán)中,你就不必一遍又一遍地重復自己了。

同樣值得一提的是,謠言暗示 ADA 現(xiàn)在正在運行比常規(guī) GPT-4 更高級的模型,至少具有更長的上下文窗口。我現(xiàn)在默認使用 ADA 進行所有操作,它確實看起來有改進;唯一的缺點是有時它會在我想要 Java 時開始為我編寫 Python。

Claude

Claude 是 Anthropic 的 GPT 競爭者。在編寫代碼方面,Claude 大約處于 GPT 3.5 水平,明顯差于GPT-4。

但是,Claude 具有 10 萬 token 的上下文窗口,是 GPT-4 的 10 倍以上。(OpenAI 剛剛宣布企業(yè)版 ChatGPT 將 GPT-4 的上下文窗口增加到 32,000 個 token,仍然只有 Claude 的三分之一。)

我使用Claude進行了三件事:

  1. 粘貼整個 Cassandra 代碼類來幫助弄清它們的作用。

  2. 上傳研究論文并提出問題。

  3. 同時進行兩者:這是一篇研究論文;這是我的Java實現(xiàn)。它們有什么不同?考慮到約束 X 和 Y,這些差異是否有意義?

Bing 和 Phind

Bing Chat 在今年早些時候推出時引起了一定關注,它仍然是免費的 GPT-4 來源(選擇 “Creative” 設置),但就這樣了。我?guī)缀跬耆V故褂盟?。微軟?Bing 的 GPT-4 版本所做的事情,使其編寫代碼的能力比 ChatGPT 中的版本差得多。

相反,當我需要 AI 風格的搜索時,我使用 Phind。這應該是 Bing 的樣子,但出于某種原因,一個微小的創(chuàng)業(yè)公司在微軟的旗艦項目之一上實現(xiàn)了執(zhí)行力。Phind 已經完全取代了我在 Java、Python、git 等中的“我該如何做 X”類問題的 Google 搜索。這里是一個使用不熟悉庫解決問題的好例子。對于這種查詢, Phind 幾乎總能命中要點 - 而且還有相關的來源。相比之下,Bing 至少會引用一個聲稱與實際不同的來源。

Bard

我還沒有找到 Bard 擅長的東西。它既不具備 GPT-4 編寫代碼的技能,也沒有 Claude 的大上下文窗口。與此同時,它的幻覺比兩者都多。

使編碼更具生產力 - 并且更有趣

Cassandra 是一個大型且成熟的代碼庫,這對希望添加新功能的新人來說可能很嚇人 - 即使對我來說也是如此,在管理方面花了 10 年時間。如果 AI 可以幫助我們中的任何一個人更快地行動,那就是了。ChatGPT 和相關的 AI 工具善于編寫代碼以解決明確定義的問題,無論是作為人類工程師設計的更大項目的一部分,還是用于一次性工具。它們在調試、繪制原型和探索不熟悉的代碼方面也很有用。

簡而言之,ChatGPT 和 Copilot 對于達到最后期限至關重要。根據任務的不同,這些工具使我的生產力提高 50% 至 100%。它們確實有局限性,但在不知疲倦地迭代更小的任務方面表現(xiàn)突出,并通過充當不知疲倦的無怨無悔的伙伴來彈出想法,幫助人類管理者保持思路。即使你有多年的編程經驗,你也需要做到這一點。

最后,甚至在不考慮生產力方面的情況下,使用 AI 幫助重復部分的編碼只是更有趣。這給了我繼續(xù)前進的動力和新的興奮來構建很酷的東西。我期待著使用這些工具的更高級版本,隨著它們的發(fā)展和成熟。



AI 如何助力 CASSANDRA 六周添加向量搜索功能的評論 (共 條)

分享到微博請遵守國家法律
巴彦淖尔市| 南江县| 满城县| 阳西县| 仪征市| 潞西市| 福州市| 巴楚县| 宁津县| 株洲市| 库车县| 弋阳县| 湖州市| 霍州市| 定南县| 南宫市| 左贡县| 泌阳县| 大关县| 汝州市| 石楼县| 长顺县| 茌平县| 巴林右旗| 榆中县| 怀集县| 交口县| 华池县| 常宁市| 松原市| 永善县| 淮阳县| 隆林| 镇原县| 米泉市| 乐安县| 八宿县| 合作市| 永吉县| 新化县| 阿拉尔市|