Fabrice AI: Triển khai kỹ thuật hiện tại

Trong bài đăng trước, Fabrice AI: Hành trình kỹ thuật , tôi đã giải thích hành trình chúng tôi đã trải qua để xây dựng Fabrice AI theo một vòng tròn hoàn chỉnh. Tôi bắt đầu bằng cách sử dụng Chat GPT 3 và 3.5. Thất vọng với kết quả, tôi đã thử sử dụng Langchain Framework để xây dựng mô hình AI của riêng mình trên đó, trước khi quay lại Chat GPT khi họ bắt đầu sử dụng cơ sở dữ liệu vector và cải thiện đáng kể kết quả với 4o.

Sau đây là quy trình hiện tại để đào tạo Fabrice AI:

  • Dữ liệu đào tạo (bài đăng trên blog, URL Youtube, URL podcast, URL PDF và URL hình ảnh) được lưu trữ trong cơ sở dữ liệu WordPress của chúng tôi.
  • Chúng tôi trích xuất dữ liệu và cấu trúc nó.
  • Chúng tôi cung cấp dữ liệu có cấu trúc cho Open AI để đào tạo bằng cách sử dụng API Trợ lý .
  • Sau đó, Open AI sẽ tạo cơ sở dữ liệu lưu trữ vector và lưu trữ nó.

Đây là ví dụ về một phần dữ liệu có cấu trúc. Mỗi phần nội dung có tệp JSON riêng. Chúng tôi đảm bảo không vượt quá giới hạn 32.000 mã thông báo.

{

“mã số”: “1”,

“ngày”: ” “,

“liên kết”:”https://fabricegrinda.com/”,

“tiêu đề”: {

“rendered”: “Fabrice AI là gì?”

  },

“Thể loại”: “Về Fabrice”,

“featured_media”: “https://fabricegrinda.com/wp-content/uploads/2023/12/About-me.png”,

“other_media”: “”,

“knowledge_type”: “blog”,

“contentUpdated”: “Fabrice AI là bản trình bày kỹ thuật số về suy nghĩ của Fabrice dựa trên các bài đăng trên blog của ông và các podcast và cuộc phỏng vấn được chọn lọc bằng ChatGPT. Vì nhiều bản ghi chép không được ghi chép đầy đủ và blog chỉ là bản trình bày hạn chế về Fabrice, chúng tôi xin lỗi vì những thông tin không chính xác và thiếu sót. Tuy nhiên, đây là điểm khởi đầu tốt để biết được suy nghĩ của Fabrice về nhiều chủ đề.”

}

Đây là triển khai kỹ thuật hiện tại:

  • Trang web dành cho người tiêu dùng được lưu trữ trên AWS Amplify .
  • Việc tích hợp giữa trang web công cộng và Open AI được thực hiện thông qua lớp API, được lưu trữ trên AWS dưới dạng máy chủ API Python.
  • Chúng tôi sử dụng MongoDB như một nhật ký để lưu trữ tất cả các câu hỏi của công chúng, các câu trả lời do Chat GPT đưa ra và URL của các nguồn.
  • Chúng tôi sử dụng nhiều tập lệnh khác nhau để cấu trúc dữ liệu từ blog, YouTube, v.v. để chuyển sang Open AI để đào tạo.
  • Chúng tôi sử dụng React-Speech Recognition để chuyển đổi câu hỏi bằng giọng nói thành văn bản.
  • Chúng tôi cũng sử dụng Google Analytics để theo dõi lưu lượng truy cập trang web.

Điều quan trọng cần lưu ý là chúng tôi sử dụng hai trợ lý:

  • Một cái để trả lời câu hỏi.
  • Một là để lấy URL siêu dữ liệu, URL blog có nội dung gốc để hiển thị nguồn ở cuối câu trả lời.

Tiếp theo là gì?

  1. Cải tiến chuyển giọng nói thành văn bản

Mô hình Whisper của Open AI cho giọng nói thành văn bản chính xác hơn React. Nó cũng hỗ trợ nhiều ngôn ngữ ngay khi cài đặt và xử lý tốt giọng nói, giọng địa phương và giọng nói hỗn hợp. Do đó, tôi rất có thể sẽ chuyển sang nó trong những tháng tới. Điều đó có nghĩa là nó phức tạp hơn để thiết lập nên có thể mất một thời gian. Bạn cần xử lý mô hình, quản lý các phụ thuộc (ví dụ: Python, thư viện) và đảm bảo bạn có đủ phần cứng để có hiệu suất hiệu quả. Ngoài ra, Whisper không được thiết kế để sử dụng trực tiếp trong trình duyệt. Khi xây dựng ứng dụng web, bạn cần tạo một dịch vụ phụ trợ để xử lý bản ghi, điều này làm tăng thêm tính phức tạp.

  • Avatar AI của Fabrice

Tôi muốn tạo một Avatar Fabrice AI trông và nghe giống tôi để bạn có thể trò chuyện. Tôi đã đánh giá D-iD nhưng thấy nó quá đắt so với mục đích của tôi. Eleven Labs chỉ có giọng nói. Synthesia rất tuyệt nhưng hiện tại không tạo video theo thời gian thực. Cuối cùng, tôi quyết định sử dụng HeyGen vì giá cả và chức năng phù hợp hơn.

Tôi ngờ rằng tại một thời điểm nào đó Open AI sẽ phát hành giải pháp riêng của mình nên công sức này sẽ trở nên vô ích. Tôi thấy thoải mái với điều đó và sẽ chuyển sang giải pháp Open AI khi và nếu có. Ở giai đoạn này, mục đích của toàn bộ bài tập này là tìm hiểu những gì có thể với AI và lượng công việc cần thiết để giúp tôi hiểu rõ hơn về không gian này.

  • Bảng điều khiển tùy chỉnh

Hiện tại, tôi cần chạy truy vấn MongoDB để trích xuất các câu hỏi và câu trả lời trong ngày. Tôi đang xây dựng một bảng điều khiển đơn giản, nơi tôi có thể trích xuất và thống kê đơn giản về số lượng truy vấn theo ngôn ngữ, số lượng yêu cầu chuyển giọng nói thành văn bản, v.v.

  • Nguồn dữ liệu bổ sung

Chúng tôi vừa tải FJ Labs Portfolio lên Fabrice AI. Bây giờ bạn có thể hỏi liệu một công ty có nằm trong danh mục đầu tư hay không. Fabrice AI trả lời bằng mô tả ngắn gọn về công ty và liên kết đến trang web của công ty.

Vì Fabrice AI nhận được rất nhiều câu hỏi cá nhân mà không có câu trả lời, nên tôi đã dành thời gian gắn thẻ thủ công từng diễn giả trong Video mừng sinh nhật lần thứ 50 của mình để cung cấp nội dung cần thiết.

Phần kết luận

Với tất cả công việc tôi đã làm trong mười hai tháng qua về mọi thứ liên quan đến AI, có vẻ như có một kết luận chung rõ ràng: bạn càng đợi lâu, thì càng rẻ, càng dễ và càng tốt, và khả năng Open AI sẽ cung cấp nó càng cao! Trong thời gian chờ đợi, hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào.

Fabrice AI: Hành trình kỹ thuật

Như tôi đã đề cập trong bài đăng trước , việc phát triển Fabrice AI phức tạp hơn dự kiến rất nhiều, buộc tôi phải khám phá nhiều cách tiếp cận khác nhau.

Cách tiếp cận ban đầu: Chỉ số Llama – Tìm kiếm Vector

Lần đầu tiên tôi thử nghiệm nâng cao khả năng truy xuất của Fabrice AI liên quan đến việc sử dụng Llama Index để tìm kiếm vector. Khái niệm này rất đơn giản: lấy nội dung từ blog của tôi, chuyển đổi thành tài liệu Langchain, sau đó chuyển đổi chúng thành tài liệu Llama. Các tài liệu Llama này sau đó sẽ được lưu trữ trong một vector index, cho phép tôi truy vấn chỉ mục này để tìm thông tin có liên quan.

Tuy nhiên, khi tôi bắt đầu thử nghiệm hệ thống, tôi nhận ra rằng cách tiếp cận này không mang lại kết quả như mong đợi. Cụ thể, khi tôi truy vấn hệ thống bằng những câu hỏi nặng về ngữ cảnh như “Những sai lầm lớn nhất mà người sáng lập thị trường mắc phải là gì?”, AI đã không đưa ra được câu trả lời có ý nghĩa. Thay vì truy xuất nội dung sắc thái mà tôi biết là đã được nhúng trong dữ liệu, nó trả về những phản hồi không liên quan hoặc không đầy đủ.

Thất bại ban đầu này khiến tôi phải xem xét lại cách tiếp cận của mình. Tôi nhận ra rằng chỉ lưu trữ nội dung trong một chỉ mục vectơ là không đủ; cơ chế truy xuất cần phải hiểu bối cảnh và sắc thái của các câu hỏi được hỏi. Nhận thức này là bài học đầu tiên trong số nhiều bài học sẽ định hình sự phát triển của Fabrice AI.

Lưu trữ kiến thức: Lưu trữ và truy xuất tài liệu MongoDB

Với những hạn chế của phương pháp Llama Index, tiếp theo tôi khám phá cách lưu trữ các tài liệu Llama trong MongoDB. Sơ đồ linh hoạt và cấu trúc hướng tài liệu của MongoDB có vẻ là giải pháp đầy hứa hẹn để quản lý nhiều loại nội dung khác nhau mà tôi đã tích lũy trong nhiều năm.

Kế hoạch là tạo ra trải nghiệm tìm kiếm năng động và phản hồi hơn. Tuy nhiên, cách tiếp cận này nhanh chóng gặp phải vấn đề. Chức năng tìm kiếm mà tôi dự đoán sẽ mạnh mẽ hơn, đã không hoạt động như mong đợi. Các truy vấn đáng lẽ phải trả về các tài liệu có liên quan thì lại không mang lại kết quả hoặc nội dung không liên quan.

Sự thất bại này thật đáng thất vọng, nhưng nó cũng nhấn mạnh một bài học quan trọng: phương pháp lưu trữ cũng quan trọng như chiến lược truy xuất. Tôi bắt đầu cân nhắc các lựa chọn khác, chẳng hạn như sử dụng MongoDB Atlas để tìm kiếm vectơ, có khả năng cung cấp độ chính xác và khả năng mở rộng mà tôi cần. Tuy nhiên, trước khi cam kết với giải pháp thay thế này, tôi muốn khám phá các cách tiếp cận khác để xác định xem có giải pháp hiệu quả hơn không.

Metadata Retriever và Vector Store: Tìm kiếm tính đặc hiệu

Một trong những hướng tiếp theo mà tôi khám phá là sử dụng trình thu thập siêu dữ liệu kết hợp với kho lưu trữ vector. Ý tưởng đằng sau cách tiếp cận này là phân loại mảng thông tin rộng lớn trong Fabrice AI và sau đó thu thập câu trả lời dựa trên các danh mục này. Bằng cách cấu trúc dữ liệu bằng siêu dữ liệu, tôi hy vọng cải thiện khả năng cung cấp câu trả lời cụ thể, có mục tiêu của AI.

Tuy nhiên, phương pháp này cũng có những hạn chế. Mặc dù có vẻ hứa hẹn trên bề mặt, AI đã phải vật lộn để đưa ra phản hồi chính xác cho mọi loại truy vấn. Ví dụ, khi tôi hỏi, “Tác giả có lạc quan không?” Hệ thống đã không diễn giải được câu hỏi trong bối cảnh của nội dung có liên quan. Thay vì cung cấp phân tích sâu sắc dựa trên siêu dữ liệu, nó trả về câu trả lời mơ hồ hoặc không có câu trả lời nào.

Cách tiếp cận này đã dạy cho tôi một bài học giá trị về tầm quan trọng của ngữ cảnh trong AI. Chỉ phân loại thông tin thôi là chưa đủ; AI cũng phải hiểu cách các danh mục này tương tác và chồng chéo nhau để hình thành nên sự hiểu biết gắn kết về nội dung. Nếu không có chiều sâu hiểu biết này, ngay cả các phương pháp truy xuất tinh vi nhất cũng có thể không đạt yêu cầu.

Cấu trúc kiến thức: SummaryTreeIndex

Khi tôi tiếp tục tinh chỉnh Fabrice AI, tôi đã thử nghiệm tạo SummaryTreeIndex. Phương pháp này nhằm mục đích tóm tắt tất cả các tài liệu thành định dạng cây, cho phép AI điều hướng qua các bản tóm tắt này và truy xuất thông tin có liên quan dựa trên cấu trúc của nội dung.

Ý tưởng là bằng cách tóm tắt các tài liệu, AI có thể nhanh chóng xác định các điểm chính và trả lời các truy vấn bằng thông tin chính xác, ngắn gọn. Tuy nhiên, phương pháp này cũng gặp phải những thách thức đáng kể. AI gặp khó khăn trong việc cung cấp các câu trả lời có ý nghĩa cho các truy vấn phức tạp, chẳng hạn như “Làm thế nào để đưa ra quyết định quan trọng trong cuộc sống?” Thay vì rút ra từ nội dung phong phú, sắc thái được lưu trữ trong các bản tóm tắt, phản hồi của AI thường hời hợt hoặc không đầy đủ.

Kinh nghiệm này nhấn mạnh đến khó khăn trong việc cân bằng giữa chiều rộng và chiều sâu trong AI. Mặc dù tóm tắt có thể cung cấp tổng quan cấp cao, nhưng chúng thường thiếu bối cảnh chi tiết cần thiết để trả lời các câu hỏi phức tạp hơn. Tôi nhận ra rằng bất kỳ giải pháp hiệu quả nào cũng cần tích hợp cả nội dung chi tiết và tóm tắt cấp cao, cho phép AI sử dụng cả hai khi cần.

Đây là lý do tại sao trong phiên bản Fabrice AI hiện tại, trước tiên tôi để AI đưa ra bản tóm tắt câu trả lời trước khi đi sâu vào chi tiết.

Mở rộng tầm nhìn: Chỉ mục biểu đồ kiến thức

Nhận ra những hạn chế của các phương pháp trước đây, tôi đã chuyển sang một cách tiếp cận tinh vi hơn: Knowledge Graph Index. Cách tiếp cận này bao gồm việc xây dựng một biểu đồ kiến thức từ văn bản phi cấu trúc, cho phép AI tham gia vào truy vấn dựa trên thực thể. Mục tiêu là tạo ra sự hiểu biết năng động và kết nối hơn về nội dung, cho phép Fabrice AI trả lời các câu hỏi phức tạp, nặng về ngữ cảnh hiệu quả hơn.

Mặc dù có triển vọng, Knowledge Graph Index cũng gặp phải những rào cản đáng kể. AI đã phải vật lộn để đưa ra kết quả chính xác, đặc biệt là đối với các truy vấn đòi hỏi phải hiểu sâu về bối cảnh. Ví dụ, khi được hỏi “Định giá Seed & Series A công bằng là gì?”, AI một lần nữa không đưa ra được câu trả lời có liên quan, làm nổi bật sự khó khăn trong việc tích hợp văn bản phi cấu trúc vào một biểu đồ kiến thức mạch lạc.

Cách tiếp cận này, mặc dù cuối cùng không thành công, đã cung cấp những hiểu biết quan trọng về những thách thức khi sử dụng biểu đồ kiến thức trong AI. Tính phức tạp của dữ liệu và nhu cầu về ngữ cảnh chính xác có nghĩa là ngay cả một biểu đồ kiến thức được xây dựng tốt cũng có thể gặp khó khăn trong việc cung cấp kết quả mong muốn. Một nhược điểm nữa của Knowledge Graph Index là tốc độ chậm. Thời gian phản hồi để có được các tài liệu liên quan rất cao so với chỉ mục lưu trữ vector.

Đánh giá lại dữ liệu: Gemini

Sau nhiều lần thất bại, tôi quyết định áp dụng một cách tiếp cận khác bằng cách tận dụng AI của Google, Gemini . Ý tưởng là tạo các tập dữ liệu từ các tệp JSON-CSV rồi đào tạo một mô hình LLM tùy chỉnh bằng dữ liệu này. Tôi hy vọng rằng bằng cách sử dụng dữ liệu có cấu trúc và một mô hình đào tạo mạnh mẽ, tôi có thể vượt qua một số thách thức đã từng gây khó khăn cho những lần thử trước.

Tuy nhiên, cách tiếp cận này cũng gặp phải khó khăn. Quá trình đào tạo bị dừng lại do định dạng dữ liệu không chính xác, khiến mô hình không được đào tạo hiệu quả. Sự cố này nhấn mạnh tầm quan trọng của tính toàn vẹn dữ liệu trong đào tạo AI. Nếu không có dữ liệu được định dạng và cấu trúc đúng cách, ngay cả những mô hình tiên tiến nhất cũng không thể hoạt động như mong đợi.

Kinh nghiệm này khiến tôi cân nhắc đến tiềm năng sử dụng BigQuery để lưu trữ dữ liệu JSON, cung cấp nền tảng đáng tin cậy và có khả năng mở rộng hơn để quản lý các tập dữ liệu lớn cần thiết để đào tạo Fabrice AI một cách hiệu quả.

Kết hợp sức mạnh: Tài liệu Langchain với Pinecone

Bất chấp những thách thức phải đối mặt cho đến nay, tôi quyết tâm tìm ra giải pháp cho phép Fabrice AI lưu trữ và truy xuất kiến thức hiệu quả. Quyết tâm này đã dẫn tôi đến thử nghiệm với các tài liệu Langchain và Pinecone. Phương pháp này bao gồm việc tạo một kho lưu trữ vectơ Pinecone bằng cách sử dụng các tài liệu Langchain và nhúng OpenAI, sau đó truy xuất các tài liệu tương tự hàng đầu dựa trên truy vấn.

Phương pháp này tỏ ra có triển vọng, đặc biệt khi truy vấn bao gồm tiêu đề của tài liệu. Ví dụ, khi được hỏi “Chìa khóa của hạnh phúc là gì?”, AI có thể truy xuất và tóm tắt chính xác nội dung có liên quan. Tuy nhiên, vẫn còn những hạn chế, đặc biệt khi truy vấn thiếu các từ khóa hoặc tiêu đề cụ thể.

Cách tiếp cận này chứng minh tiềm năng kết hợp các công nghệ khác nhau để nâng cao hiệu suất AI. Bằng cách tích hợp các tài liệu Langchain với kho lưu trữ vector của Pinecone, tôi đã có thể cải thiện tính liên quan và độ chính xác của phản hồi của AI, mặc dù có một số hạn chế.

Đạt được sự nhất quán: GPT Builder OpenAI

Sau khi khám phá nhiều phương pháp và công nghệ khác nhau, tôi đã chuyển sang GPT Builder của Open AI để hợp nhất và tinh chỉnh kiến thức được lưu trữ trong Fabrice AI. Bằng cách tải tất cả nội dung vào cơ sở kiến thức GPT, tôi hướng đến mục tiêu tạo ra một nền tảng nhất quán và đáng tin cậy hơn để truy xuất và tương tác với kiến thức của mình.

Cách tiếp cận này đã chứng minh là một trong những cách thành công nhất, với AI có thể cung cấp kết quả tốt hơn trên nhiều truy vấn. Chìa khóa thành công này là tích hợp tất cả kiến thức vào một hệ thống thống nhất, cho phép AI khai thác toàn bộ nội dung khi trả lời các câu hỏi.

Như đã đề cập trong bài đăng trước, tôi không thể chạy nó trên trang web của mình và nó chỉ khả dụng với những người đăng ký trả phí của Chat GPT mà tôi cảm thấy quá hạn chế. Ngoài ra, mặc dù nó tốt hơn, tôi vẫn không thích chất lượng câu trả lời và không thoải mái khi phát hành nó cho công chúng.

Tinh chỉnh cuối cùng: Trợ lý GPT sử dụng Model 4o

Mảnh ghép cuối cùng của câu đố trong quá trình phát triển Fabrice AI xuất hiện cùng với sự ra đời của GPT Assistants sử dụng Model 4o. Cách tiếp cận này đại diện cho đỉnh cao của mọi thứ tôi đã học được trong suốt dự án. Bằng cách sử dụng cơ sở dữ liệu vector và tinh chỉnh các lời nhắc, tôi đặt mục tiêu đạt được mức độ chính xác và hiểu biết ngữ cảnh cao nhất có thể trong các phản hồi của AI.

Phương pháp này bao gồm việc tải lên tất cả kiến thức tôi đã tích lũy được vào cơ sở dữ liệu vector, sau đó được sử dụng làm nền tảng cho các tương tác của AI. Cơ sở dữ liệu vector cho phép AI thực hiện các tìm kiếm phức tạp hơn, truy xuất thông tin dựa trên ý nghĩa ngữ nghĩa của các truy vấn thay vì chỉ dựa vào việc khớp từ khóa. Điều này đánh dấu một bước tiến đáng kể so với các phương pháp tiếp cận trước đây, cho phép AI hiểu và phản hồi tốt hơn các câu hỏi phức tạp, nhiều sắc thái.

Một trong những cải tiến chính của phương pháp này là sự tinh chỉnh cẩn thận các lời nhắc. Bằng cách tỉ mỉ tạo ra và thử nghiệm các lời nhắc khác nhau, tôi có thể hướng dẫn AI cung cấp các câu trả lời chính xác và phù hợp hơn. Điều này không chỉ bao gồm việc điều chỉnh cách diễn đạt của các lời nhắc mà còn thử nghiệm các cách khác nhau để cấu trúc các truy vấn nhằm đưa ra các phản hồi tốt nhất có thể.

Kết quả thật ấn tượng. AI hiện có thể xử lý nhiều loại truy vấn với độ chính xác cao, ngay cả khi các câu hỏi mở hoặc đòi hỏi hiểu biết sâu sắc về bối cảnh. Ví dụ, khi được hỏi “Làm thế nào để đưa ra những quyết định quan trọng nhất trong cuộc sống của bạn?”, AI đã đưa ra câu trả lời toàn diện và sâu sắc, dựa trên nhiều nguồn và góc nhìn khác nhau để đưa ra phản hồi toàn diện.

Thành công này là đỉnh cao của hàng trăm giờ làm việc và vô số thử nghiệm. Nó chứng minh rằng, với sự kết hợp đúng đắn giữa công nghệ và sự tinh chỉnh, có thể tạo ra một AI không chỉ có thể lưu trữ và truy xuất thông tin hiệu quả mà còn tương tác với thông tin theo cách có ý nghĩa. Sự phát triển của GPT Assistants sử dụng Model 4o đánh dấu thời điểm mà Fabrice AI thực sự phát huy hết khả năng của mình, đạt được mức độ tinh vi và chính xác mà tôi đã hình dung ngay từ đầu. API GPT Assistants sau đó đã được tích hợp vào blog của tôi để cho phép người dùng cuối tương tác với Fabrice AI theo cách bạn thấy trên blog ngay bây giờ.

Suy ngẫm về hành trình

Quá trình phát triển Fabrice AI đã làm nổi bật sự phức tạp khi làm việc với AI, đặc biệt là khi nói đến việc hiểu và ngữ cảnh hóa thông tin. Nó dạy tôi rằng không có lối tắt nào trong quá trình phát triển AI—mỗi bước, mỗi lần lặp lại và mỗi thử nghiệm đều là một phần cần thiết của hành trình hướng tới việc tạo ra thứ gì đó thực sự hiệu quả.

Nhìn về phía trước, tôi rất hào hứng được tiếp tục tinh chỉnh và mở rộng Fabrice AI. Như đã đề cập trong bài đăng trước, tôi sẽ xem xét các câu hỏi được hỏi để hoàn thiện cơ sở kiến thức khi còn thiếu sót. Tôi cũng hy vọng cuối cùng sẽ phát hành một phiên bản tương tác trông và nghe giống tôi mà bạn có thể nói chuyện.

>