Gemini Embedding:谷歌Gemini AI框架下的多語言文本嵌入模型
對於印地語等印度語系的自然語言處理(NLP) 任務(如機器翻譯、問答和信息檢索)而言,詞嵌入至關重要。這些嵌入捕捉單詞的語義屬性,從而實現更準確、更注重語境的NLP 應用。鑑於印地語使用者眾多且印度語係數字內容日益增長,高質量的嵌入對於提高這些語言的NLP 性能至關重要。定制化的嵌入可以特別解決印度語系的獨特語言特徵和資源限制問題。新發布的Gemini Embedding 模型代表了多語言文本嵌入的重大進步,它利用谷歌強大的Gemini AI 框架,在100 多種語言中實現了最先進的性能。
Gemini Embedding 模型擅長分類、檢索和語義搜索等任務,提供更高的效率和準確性。通過支持更大的輸入規模和更高維度的輸出,Gemini Embedding 提供更豐富的文本表示,使其能夠廣泛應用於各種應用。
學習目標
- 了解Gemini 嵌入及其與Gemini LLM 的集成。
- 使用Gemini 嵌入檢索印地語文檔的實踐教程。
- 與Jina AI 嵌入和Multilingual-e5-large 的比較分析。
- 對多語言文本檢索能力和應用的見解。
*本文作為***數據科學博客馬拉松的一部分發表。 ***
目錄
- 什麼是Gemini 嵌入?
- Gemini 嵌入的關鍵特性
- Gemini 嵌入的模型架構
- 與其他多語言嵌入模型的比較
- 使用Gemini 嵌入進行檢索,並與Jina AI 嵌入和Multilingual-e5-large 進行比較
- 步驟1. 安裝必要的庫
- 步驟2. 加載數據
- 步驟3. 對數據進行分塊
- 步驟4. 將數據存儲在向量數據庫中
- 步驟5. 查詢數據庫
- 步驟6. 與Jina AI 嵌入進行比較
- 嵌入檢索輸出的比較
- 解釋
- 結論
- 常見問題
什麼是Gemini 嵌入?
2025 年3 月,谷歌發布了一個新的實驗性Gemini Embedding 文本模型(gemini-embedding-exp-03-07),可在Gemini API 中使用。
該高級嵌入模型源於Gemini 模型,據稱繼承了Gemini 對語言和細微語境細微差別的深刻理解,使其能夠廣泛應用於各種應用。它在MTEB 多語言排行榜上佔據榜首。
Gemini Embedding 將文本表示為密集向量,其中語義相似的文本輸入映射到向量空間中彼此靠近的向量。目前,它支持100 多種語言,其嵌入可用於各種任務,例如檢索和分類。
Gemini 嵌入的關鍵特性
- 強大的多語言能力: 該模型在100 多種語言中展現出卓越的性能,不僅在英語等高資源語言中表現出色,而且在阿薩姆語和馬其頓語等低資源語言中也表現出色。
- 處理多達8000 個輸入標記: 這種強大的能力使模型能夠無縫處理冗長的文檔或複雜的查詢,而不會截斷,從而以超越許多現有嵌入模型的方式保持上下文和含義。
- 3K 維的輸出維度: 該模型生成的嵌入維度高達3072,並支持768 和1536 等子維度,以便進行特定於任務的優化。
- 令人印象深刻的性能: Gemini Embedding 在海量文本嵌入基準測試(MTEB) 中排名第一,平均任務得分為68.32,大大超過了其最接近的競爭對手。
Gemini 嵌入的模型架構
Gemini Embedding 的核心是基於Transformer 架構,並從Gemini LLM 初始化。這個基礎為模型提供了對語言結構和語義的深刻理解。該模型使用雙向注意力機制來處理輸入序列,使其在生成嵌入時能夠考慮單詞或短語的完整上下文。
- 輸入序列T 由M(一個具有雙向注意力的Transformer,從Gemini 初始化)處理,產生一個標記嵌入序列。
- 為了生成一個表示輸入中所有信息的單個嵌入,應用池化函數。
- 最後,應用線性投影將嵌入縮放至目標維度,從而產生最終輸出嵌入。
損失函數: Gemini Embedding 模型使用帶批內負例的噪聲對比估計(NCE) 損失進行訓練。確切的損失會根據訓練階段略有不同。一般來說,一個訓練示例包括一個查詢、一個正目標和(可選)一個難負目標。
訓練策略
- 預微調: 在此階段,模型在一個包含查詢-目標對的大型多樣化數據集上進行訓練。這種曝光調整大型語言模型的參數以進行編碼任務,為其適應性奠定基礎。
- 微調: 在第二階段,模型使用包含查詢-正例-難負例三元組的特定於任務的數據集進行微調。此過程使用較小的批量大小和精心策劃的數據集來提高目標任務的性能。
另請閱讀:Gemini Embedding:來自Gemini 的通用嵌入
與其他多語言嵌入模型的比較
我們將印地語文檔的檢索與新發布的最新Gemini 嵌入進行比較,然後將其與Jina AI 嵌入和Multilingual-e5-large 嵌入進行比較。如下表所示,就最大標記數而言,Gemini 嵌入和Jina AI 嵌入很高,使模型能夠處理長文檔或複雜的查詢。此外,如下表所示,Gemini 嵌入具有更高的嵌入維度,可以捕捉單詞之間更細緻和更細微的語義關係,使模型能夠表示複雜的語言模式和含義的細微差別。
參數數量 | 嵌入維度 | 最大標記 | 語言數量 | 套娃嵌入 | |
gemini-embedding-exp-03-07 | 未知 | 3072 | 8192 | 100 | 支持將嵌入截斷為各種尺寸,例如2048、1024、512、256 和128 維度, |
jinaai/jina-embeddings-v3 | 5.72 億 | 1024 | 8194 | 100 | 支持靈活的嵌入大小(32、64、128、256、512、768、1024),允許截斷嵌入以適應您的應用程序 |
multilingual-e5-large-instruct | 5.6 億 | 1024 | 514 | 94 | NA |
使用Gemini 嵌入進行檢索,並與Jina AI 嵌入和Multilingual-e5-large 進行比較
在以下實踐教程中,我們將印地語文檔的檢索與新發布的最新Gemini 嵌入進行比較,然後將其與Jina AI 嵌入和Multilingual-e5-large 嵌入進行比較。
步驟1. 安裝必要的庫
<code>!pip install langchain-community !pip install chromadb</code>
步驟2. 加載數據
我們使用來自網站的印地語數據來評估Gemini 嵌入在印地語語言檢索方面的性能。
<code>from langchain_community.document_loaders import WebBaseLoader loader = WebBaseLoader("https://ckbirlahospitals.com/rbh/blog/pregnancy-early-symptoms-in-hindi") data = loader.load()</code>
步驟3. 對數據進行分塊
下面的代碼使用RecursiveCharacterTextSplitter 將大型文本文檔拆分成500 個字符的小塊,沒有重疊。然後,它將此拆分應用於datavariable 並將結果存儲在all_splits 中。由於Gemini Embedding API 的速率限制,我們只使用10 個拆分。
<code>from langchain_text_splitters import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0) all_splits = text_splitter.split_documents(data) all_splits = all_splits[:10]</code>
步驟4. 將數據存儲在向量數據庫中
我們首先創建一個名為“GeminiEmbeddingFunction”的類,它有助於查詢Gemini Embedding API 並返回輸入查詢的嵌入值。然後,我們創建一個名為“create_chroma_db”的函數,用於在ChromaDB 中創建一個集合,該集合將存儲數據以及嵌入。
<code>import chromadb from chromadb import Documents, EmbeddingFunction, Embeddings class GeminiEmbeddingFunction(EmbeddingFunction): def __call__(self, input: Documents) -> Embeddings: title = "Custom query" return client.models.embed_content( model="gemini-embedding-exp-03-07", contents=input).embeddings[0].values def create_chroma_db(documents, name): chroma_client = chromadb.Client() db = chroma_client.create_collection(name=name, embedding_function=GeminiEmbeddingFunction()) for i, d in enumerate(documents): db.add( documents=d.page_content, ids=str(i) ) return db db = create_chroma_db(all_splits, "datab")</code>
步驟5. 查詢數據庫
<code>def get_relevant_passage(query, db): passage = db.query(query_texts=[query], n_results=1)['documents'][0][0] return passage passage = get_relevant_passage("आपको प्रेगनेंसी टेस्ट कब करवाना चाहिए?", db) print(passage)</code>
步驟6. 與Jina AI 嵌入進行比較
下面的代碼使用Hugging Face transformer 模型定義了一個自定義嵌入函數,以及一種處理文本輸入以生成嵌入的方法。
- 來自transformers 的AutoTokenizer 和AutoModel 用於加載預訓練模型(jinaai/jina-embeddings-v3),並從chromadb 導入EmbeddingFunction 用於創建自定義嵌入。
- average_pool 函數:此函數通過對模型的隱藏狀態執行池化操作來聚合它們,在考慮注意力掩碼(忽略填充標記)的同時對序列長度取平均值。
- CustomHuggingFace 類:它對文本進行標記化,將其饋送到模型中,並使用average_pool 函數計算嵌入。結果作為嵌入列表返回。
<code>from transformers import AutoTokenizer, AutoModel from chromadb import EmbeddingFunction tokenizer = AutoTokenizer.from_pretrained('jinaai/jina-embeddings-v3') model = AutoModel.from_pretrained('jinaai/jina-embeddings-v3') # the model returns many hidden states per document so we must aggregate them def average_pool(last_hidden_states, attention_mask): last_hidden = last_hidden_states.masked_fill(~attention_mask[...,None].bool(), 0.0) return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[...,None] class CustomHuggingFace(EmbeddingFunction): def __call__(self, texts): queries = [f'query: {text}' for text in texts] batch_dict = tokenizer(texts, max_length=512, padding=True, truncation=True, return_tensors='pt') outputs = model(**batch_dict) embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask']) return embeddings.tolist()</code>
查詢
<code>def get_relevant_passage(query, db): passage = db.query(query_texts=[query], n_results=1)['documents'][0][0] return passage passage = get_relevant_passage("आपको प्रेगनेंसी टेस्ट कब करवाना चाहिए?", db) print(passage)</code>
對於選擇Multilingual-e5-large 嵌入,我們只需將標記器和模型替換為“intfloat/multilingual-e5-large-instruct”。
嵌入檢索輸出的比較
問題編號 | 查詢 | Gemini 嵌入 | jinaai/jina-embeddings-v3 | intfloat/multilingual-e5-large-instruct |
1 | आपको प्रेगनेंसी टेस्ट कब करवाना चाहिए? | 如果您想詳細了解懷孕的早期症狀,那麼這篇博文非常適合您。您應該何時進行懷孕測試? –錯誤 | 如果您想詳細了解懷孕的早期症狀,那麼這篇博文非常適合您。您應該何時進行懷孕測試? –錯誤 | 如果您想詳細了解懷孕的早期症狀,那麼這篇博文非常適合您。您應該何時進行懷孕測試? –錯誤 |
2 | Pregnancy के kuch symptoms क्या होते हैं? | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 | 懷孕的跡象:早期症狀的完整信息!主頁快速諮詢患者登錄聯繫我們:08062136530 緊急電話:07340054470 打開主菜單服務患者和訪客國際患者關於我們預約回電WhatsApp 了解懷孕的早期症狀。婦產科|作者:CP Dadhich 博士| 發布日期:2025 年2 月6 日目錄您應該何時進行懷孕測試?懷孕的早期症狀是什麼?懷孕的早期症狀懷孕的–錯誤 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 |
3 | गर्भावस्था के दौरान एंटीबायोटिक दवा लेने से कब बचना चाहिए? | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 每個女性都應該了解的內容。對於任何與懷孕相關的疑問,我們建議您聯繫我們的婦科醫生,消除所有並發症。 –錯誤 |
4 | कब गर्भावस्था में एंटीबायोटिक दवा लेने से बचाया जाए? | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 每個女性都應該了解的內容。對於任何與懷孕相關的疑問,我們建議您聯繫我們的婦科醫生,消除所有並發症。 –錯誤 |
5 | गर्भधारण का सबसे पहला सामान्य लक्षण क्या है? | 月經推遲:這是懷孕的最早和最常見的症狀。僅根據此症狀來確認懷孕並不完全正確。但是,如果月經推遲一周或更長時間,建議進行懷孕測試。乳房變化:懷孕期間,乳房會腫脹、變嫩或顏色發生變化。主要是在乳頭(乳暈)的大小和顏色上發生變化。 –正確 | 考慮到這一點,如何確認懷孕?懷孕第一個月如何護理?如何進行懷孕檢查?懷孕期間應該如何坐?懷孕期間應該發生性行為嗎?懷孕期間應該吃什麼水果?懷孕期間應該喝多少水?成為母親的快樂是世界上最大的快樂。懷孕期間,女性的身體和心理都會發生許多變化。您將這些變化稱為懷孕的早期症狀,–錯誤 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 |
6 | गर्भधारण के पहले संकेत क्या होते हैं? | 懷孕的跡象:早期症狀的完整信息!主頁快速諮詢患者登錄聯繫我們:08062136530 緊急電話:07340054470 打開主菜單服務患者和訪客國際患者關於我們預約回電WhatsApp 了解懷孕的早期症狀。婦產科|作者:CP Dadhich 博士| 發布日期:2025 年2 月6 日目錄您應該何時進行懷孕測試?懷孕的早期症狀是什麼?懷孕的早期症狀懷孕的–錯誤 | 考慮到這一點,如何確認懷孕?懷孕第一個月如何護理?如何進行懷孕檢查?懷孕期間應該如何坐?懷孕期間應該發生性行為嗎?懷孕期間應該吃什麼水果?懷孕期間應該喝多少水?成為母親的快樂是世界上最大的快樂。懷孕期間,女性的身體和心理都會發生許多變化。您將這些變化稱為懷孕的早期症狀,–錯誤 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 |
7 | गर्भावस्था की पुष्टि के लिए कौन से हार्मोन का पता लगाना होता है? | 進行懷孕測試的最佳時間是在月經推遲至少7 天后。您可以使用家用懷孕測試工具在家中檢測hCG 水平。在懷孕期間,這種激素的水平會顯著升高。您需要注意的一點是,過早進行測試也可能導致錯誤的結果,因此,如果您的月經推遲並且測試結果為陰性,建議您至少再等3 天,然後再次進行測試。 –正確 | 這樣做也有正確的方法,您也可以在測試工具說明書上看到。為了獲得準確的結果,您應該使用早晨的第一泡尿,因為這時可以測量hCG 激素的正確水平。此外,如果您經歷了懷孕的早期症狀,並且測試結果為陰性,請立即去看醫生進行血液測試。在任何情況下,如有任何疑問,都必須諮詢醫生。 –正確 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –錯誤 |
解釋
從上述印地語輸出中可以看出,使用Gemini 嵌入,我們從7 個查詢中得到了5 個正確的輸出,而使用Jina AI 嵌入和Multilingual-e5-large,我們只得到了3 個正確的響應。
這表明,正如MTEB 基準測試所反映的那樣,Gemini 嵌入可以很好地執行,並且比其他嵌入模型更好地處理印地語等多語言。
結論
總之,Gemini 嵌入代表了多語言NLP 的重大進步,特別是對於印地語等印度語系語言。憑藉其強大的多語言能力、對大型輸入尺寸的支持以及在MTEB 等基準測試中的卓越性能,Gemini 在檢索、分類和語義搜索等任務中表現出色。通過實踐比較可以看出,Gemini 的性能優於其他模型,提供更高的準確性和效率,使其成為促進多種語言NLP 的寶貴工具。
主要收穫
- 印地語系語言詞嵌入的重要性: 高質量的嵌入增強了翻譯、問答和檢索等NLP 任務,解決了語言挑戰和資源差距問題。
- Gemini Embedding 模型: 谷歌的Gemini 嵌入利用其AI 框架進行多語言文本處理,涵蓋100 多種語言,包括低資源語言。
- 關鍵特性: 支持8000 個標記和3072 維嵌入,能夠高效處理長文檔和復雜查詢。
- 令人印象深刻的性能: 在MTEB 多語言排行榜上排名第一,平均任務得分為68.32,展示了其在多語言NLP 中的強大功能。
本文中顯示的媒體並非Analytics Vidhya 所有,作者可自行決定使用。
常見問題
Q1. 什麼是Gemini Embedding 模型?答:Gemini Embedding 模型基於谷歌的Gemini AI,為包括印地語在內的100 多種語言提供頂級多語言文本嵌入。
Q2. 與其他模型相比,Gemini Embedding 的獨特之處是什麼?答:Gemini Embedding 在多語言支持方面表現出色,可以處理8000 個標記,並輸出3072 維,確保在分類、檢索和語義搜索方面的效率。
Q3. Gemini Embedding 在多語言任務中的表現如何?答:Gemini Embedding 在英語等高資源語言和阿薩姆語、馬其頓語等低資源語言中的表現都很好。它在MTEB 多語言排行榜上排名第一,展示了其強大的多語言能力。
Q4. Gemini Embedding 模型的架構是什麼?答:該模型從Gemini LLM 初始化,使用具有雙向注意力的Transformer 架構來生成高質量的文本嵌入,捕捉上下文和含義。
Q5. Gemini Embedding 模型是如何訓練的?答:Gemini Embedding 使用帶批內負例的噪聲對比估計(NCE) 損失進行訓練。它經歷了兩個訓練階段:在一個大型數據集上進行預微調,並在特定於任務的數據集上進行微調,以提高NLP 性能。
以上是與多語言E5-Large和Jina嵌入雙子座的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!
![無法使用chatgpt!解釋可以立即測試的原因和解決方案[最新2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
ChatGPT無法訪問?本文提供多種實用解決方案!許多用戶在日常使用ChatGPT時,可能會遇到無法訪問或響應緩慢等問題。本文將根據不同情況,逐步指導您解決這些問題。 ChatGPT無法訪問的原因及初步排查 首先,我們需要確定問題是出在OpenAI服務器端,還是用戶自身網絡或設備問題。 請按照以下步驟進行排查: 步驟1:檢查OpenAI官方狀態 訪問OpenAI Status頁面 (status.openai.com),查看ChatGPT服務是否正常運行。如果顯示紅色或黃色警報,則表示Open

2025年5月10日,麻省理工學院物理學家Max Tegmark告訴《衛報》,AI實驗室應在釋放人工超級智能之前模仿Oppenheimer的三位一體測試演算。 “我的評估是'康普頓常數',這是一場比賽的可能性

AI音樂創作技術日新月異,本文將以ChatGPT等AI模型為例,詳細講解如何利用AI輔助音樂創作,並輔以實際案例進行說明。我們將分別介紹如何通過SunoAI、Hugging Face上的AI jukebox以及Python的Music21庫進行音樂創作。 通過這些技術,每個人都能輕鬆創作原創音樂。但需注意,AI生成內容的版權問題不容忽視,使用時務必謹慎。 讓我們一起探索AI在音樂領域的無限可能! OpenAI最新AI代理“OpenAI Deep Research”介紹: [ChatGPT]Ope

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显著提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

CHATGPT應用程序:與AI助手釋放您的創造力!初學者指南 ChatGpt應用程序是一位創新的AI助手,可處理各種任務,包括寫作,翻譯和答案。它是一種具有無限可能性的工具,可用於創意活動和信息收集。 在本文中,我們將以一種易於理解的方式解釋初學者,從如何安裝chatgpt智能手機應用程序到語音輸入功能和插件等應用程序所獨有的功能,以及在使用該應用時要牢記的要點。我們還將仔細研究插件限制和設備對設備配置同步

ChatGPT中文版:解鎖中文AI對話新體驗 ChatGPT風靡全球,您知道它也提供中文版本嗎?這款強大的AI工具不僅支持日常對話,還能處理專業內容,並兼容簡體中文和繁體中文。無論是中國地區的使用者,還是正在學習中文的朋友,都能從中受益。 本文將詳細介紹ChatGPT中文版的使用方法,包括賬戶設置、中文提示詞輸入、過濾器的使用、以及不同套餐的選擇,並分析潛在風險及應對策略。此外,我們還將對比ChatGPT中文版和其他中文AI工具,幫助您更好地了解其優勢和應用場景。 OpenAI最新發布的AI智能

這些可以將其視為生成AI領域的下一個飛躍,這為我們提供了Chatgpt和其他大型語言模型聊天機器人。他們可以代表我們採取行動,而不是簡單地回答問題或產生信息

使用chatgpt有效的多個帳戶管理技術|關於如何使用商業和私人生活的詳盡解釋! Chatgpt在各種情況下都使用,但是有些人可能擔心管理多個帳戶。本文將詳細解釋如何為ChatGpt創建多個帳戶,使用時該怎麼做以及如何安全有效地操作它。我們還介紹了重要的一點,例如業務和私人使用差異,並遵守OpenAI的使用條款,並提供指南,以幫助您安全地利用多個帳戶。 Openai


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。